×

关注微信公众号

免备案网站空间虚拟主机双线空间域名查询PS数码后期
photoshop互助课堂数百G视频教程下载英语培训机构初中英语如何学随时随地聆听大师开讲/课堂
酷素材!视频教程打包下手绘教程抠图教程路径专辑photoshop cs3视频教程
查看: 240478|回复: 20

[基础入门第十一课] 加密解密

[复制链接]
发表于 2006-6-9 12:20:33 | 显示全部楼层 |阅读模式
  1. <%
  2.      OPTION EXPLICIT
  3.      const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  4.      dim newline
  5.      dim Base64EncMap(63)
  6.      dim Base64DecMap(127)
  7.      '初始化函数
  8.      PUBLIC SUB initCodecs()
  9.           ' 初始化变量
  10.           newline = "<P>" & chr(13) & chr(10)
  11.           dim max, idx
  12.              max = len(BASE_64_MAP_INIT)
  13.           for idx = 0 to max - 1
  14.                Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
  15.           next
  16.           for idx = 0 to max - 1
  17.                Base64DecMap(ASC(Base64EncMap(idx))) = idx
  18.           next
  19.      END SUB
  20.      'Base64加密函数
  21.      PUBLIC FUNCTION base64Encode(plain)
  22.           if len(plain) = 0 then
  23.                base64Encode = ""
  24.                exit function
  25.           end if
  26.           dim ret, ndx, by3, first, second, third
  27.           by3 = (len(plain) \ 3) * 3
  28.           ndx = 1
  29.           do while ndx <= by3
  30.                first  = asc(mid(plain, ndx+0, 1))
  31.                second = asc(mid(plain, ndx+1, 1))
  32.                third  = asc(mid(plain, ndx+2, 1))
  33.                ret = ret & Base64EncMap(  (first \ 4) AND 63 )
  34.                ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
  35.                ret = ret & Base64EncMap( ((second * 4) AND 60) + ((third \ 64) AND 3 ) )
  36.                ret = ret & Base64EncMap( third AND 63)
  37.                ndx = ndx + 3
  38.           loop
  39.           if by3 < len(plain) then
  40.                first  = asc(mid(plain, ndx+0, 1))
  41.                ret = ret & Base64EncMap(  (first \ 4) AND 63 )
  42.                if (len(plain) MOD 3 ) = 2 then
  43.                     second = asc(mid(plain, ndx+1, 1))
  44.                     ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
  45.                     ret = ret & Base64EncMap( ((second * 4) AND 60) )
  46.                else
  47.                     ret = ret & Base64EncMap( (first * 16) AND 48)
  48.                     ret = ret '& "="
  49.                end if
  50.                ret = ret '& "="
  51.           end if
  52.           base64Encode = ret
  53.      END FUNCTION
  54.      'Base64解密函数
  55.      PUBLIC FUNCTION base64Decode(scrambled)
  56.           if len(scrambled) = 0 then
  57.                base64Decode = ""
  58.                exit function
  59.           end if
  60.           dim realLen
  61.           realLen = len(scrambled)
  62.           do while mid(scrambled, realLen, 1) = "="
  63.                realLen = realLen - 1
  64.           loop
  65.           dim ret, ndx, by4, first, second, third, fourth
  66.           ret = ""
  67.           by4 = (realLen \ 4) * 4
  68.           ndx = 1
  69.           do while ndx <= by4
  70.                first  = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
  71.                second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
  72.                third  = Base64DecMap(asc(mid(scrambled, ndx+2, 1)))
  73.                fourth = Base64DecMap(asc(mid(scrambled, ndx+3, 1)))
  74.                ret = ret & chr( ((first * 4) AND 255) +   ((second \ 16) AND 3))
  75.                ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15))
  76.                ret = ret & chr( ((third * 64) AND 255) +  (fourth AND 63))
  77.                ndx = ndx + 4
  78.           loop
  79.           if ndx < realLen then
  80.                first  = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
  81.                second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
  82.                ret = ret & chr( ((first * 4) AND 255) +   ((second \ 16) AND 3))
  83.                if realLen MOD 4 = 3 then
  84.                     third = Base64DecMap(asc(mid(scrambled,ndx+2,1)))
  85.                     ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15))
  86.                end if
  87.           end if
  88.           base64Decode = ret
  89.      END FUNCTION
  90. ' 初始化
  91.      call initCodecs
  92. ' 测试代码
  93.     dim inp, encode
  94.     inp = "1234567890"
  95.     encode = base64Encode(inp)
  96.     response.write "加密前为:" & inp & newline
  97.     response.write "加密后为:" & encode & newline
  98.     response.write "解密后为:" & base64Decode(encode) & newline
  99. %>
复制代码


实例下载:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?[免费注册]

x
发表于 2006-6-9 12:55:31 | 显示全部楼层
强烈支持一下.
发表于 2006-6-9 14:09:54 | 显示全部楼层
学习
发表于 2006-6-14 09:10:12 | 显示全部楼层

[基础入门第十一课] 加密解密

参考参考
发表于 2006-6-22 21:00:10 | 显示全部楼层
看不懂哈
发表于 2007-8-26 20:46:17 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

发表于 2017-11-12 11:43:09 | 显示全部楼层
很不错。。。
回复 支持 反对

使用道具 举报

发表于 2017-11-12 10:52:56 | 显示全部楼层
难得一见的好帖
回复 支持 反对

使用道具 举报

发表于 2017-11-12 11:23:06 | 显示全部楼层
说的非常好
回复 支持 反对

使用道具 举报

发表于 2017-11-12 11:39:05 | 显示全部楼层
学习了。。。
回复 支持 反对

使用道具 举报

发表于 2017-11-12 11:15:44 | 显示全部楼层
果断收藏了
回复 支持 反对

使用道具 举报

发表于 2018-9-24 18:41:35 | 显示全部楼层
很不错。。。
回复 支持 反对

使用道具 举报

发表于 2018-9-24 18:31:23 | 显示全部楼层
顶顶多好
回复 支持 反对

使用道具 举报

发表于 2018-9-24 18:23:59 | 显示全部楼层
说的非常好
回复 支持 反对

使用道具 举报

发表于 2018-9-24 18:42:48 | 显示全部楼层
LZ真是人才
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [免费注册]

本版积分规则