·您当前的位置:首页 > 技术教程 > PHP教程 >

[ASPX]VBS、aspx下的base64加密与解密算法的示例代码

时间:2017-04-27 17:57csdn.net
[ASPX]VBS、aspx下的base64加密与解密算法的示例代码,[ASPX]VBS、aspx下的base64加密与解密算法的示例代码

[ASPX]VBS、aspx下的base64加密与解密算法的示例代码

  1. <%'基于VBS、ASP的Base64 Encode 和 Base64 Decode   
  2. Dim sc   
  3. Set sc = CreateObject("MSScriptControl.ScriptControl")   
  4. sc.Language = "JScript"   
  5.    
  6. Dim tmpStr, tmpResult   
  7. tmpStr = "··ASCII第···一次以规范标准的型态发表是在1967年,1234567890-=`~!·#¥%……—*()——+~!@#$%^&*()_+[]{};'\:""|,./<>?《》?:“|{},。/;‘、][ABCDEFGHIJKLMNOPQRSTUVWXYZ最后一次更新则是在1986年,至今为止共定义了128个字符,其中33个字符无法显示(这是以现今操作系统为依归,但在DOS模式··"   
  8. tmpResult = vbsBase64Encode(StringToByteArray(tmpStr))   
  9. Response.write "编码: " & tmpResult & "<BR>"   
  10. tmpResult = ByteArrayToString(vbsBase64Decode(tmpResult))   
  11. Response.write "解码:" & tmpResult & "<BR>"   
  12. Response.write "原串:" & tmpStr & "<BR>"   
  13.    
  14. If tmpStr <> tmpResult Then   
  15.     Response.write "结果不同"   
  16. Else   
  17.     Response.write "结果相同"   
  18. End If   
  19.    
  20. '编码   
  21. Function vbsBase64Encode(byteArray)   
  22.     Dim last2byte : last2byte = 3   
  23.     Dim last4byte : last4byte = 15   
  24.     Dim last6byte : last6byte = 63   
  25.     Dim lead6byte : lead6byte = 252   
  26.     Dim lead4byte : lead4byte = 240   
  27.     Dim lead2byte : lead2byte = 192   
  28.     Dim encodeTable : encodeTable = Split("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9,+,/", ",")   
  29.     Dim objectStr : objectStr = ""   
  30.     Dim num   
  31.     num = 0   
  32.     Dim currentByte   
  33.     currentByte = 0   
  34.     Dim i   
  35.     For i = 0 to ubound(byteArray)   
  36.         numnum = num mod 8   
  37.         do while(num < 8)   
  38.             Select Case num   
  39.              Case 0   
  40.                 currentByte = byteArray(i) and lead6byte   
  41.                 currentByte = uRShift(currentByte, 2)   
  42.              Case 2   
  43.                 currentByte = byteArray(i) and last6byte   
  44.              Case 4   
  45.                 currentByte = byteArray(i) and last4byte   
  46.                 currentByte = LShift(currentByte, 2)   
  47.                 If ((i + 1) <= ubound(byteArray)) Then   
  48.                     currentBytecurrentByte = currentByte or uRShift(byteArray(i + 1) and lead2byte, 6)   
  49.                 End If   
  50.              Case 6   
  51.                 currentByte = byteArray(i) and last2byte   
  52.                 currentByte = LShift(currentByte, 4)   
  53.                 If ((i + 1) <= ubound(byteArray)) Then   
  54.                     currentBytecurrentByte = currentByte or uRShift(byteArray(i + 1) and lead4byte, 4)   
  55.                 End If   
  56.             End Select   
  57.             objectStrobjectStr = objectStr & encodeTable(currentByte)   
  58.             numnum = num + 6   
  59.         Loop   
  60.     Next   
  61.     If (Len(objectStr) mod 4 <> 0) Then   
  62.         For i = (4 - Len(objectStr) mod 4) to 1 step - 1   
  63.             objectStrobjectStr = objectStr & "="   
  64.         Next   
  65.     End If   
  66.     vbsBase64Encode = objectStr   
  67. End Function   
  68. '转载请说明来源于:http://blog.csdn.net/aminfo/article/details/70478053   
  69. '解码   
  70. Function vbsBase64Decode(str)   
  71.     Dim delta   
  72.     Dim ALPHABET : ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"   
  73.     If Right(str, 2) = "==" Then   
  74.         delta = 2   
  75.     ElseIf Right(str, 1) = "=" Then   
  76.         delta = 1   
  77.     Else   
  78.         delta = 0   
  79.     End If   
  80.     Redim buffer(Len(str) * 3 / 4 - delta)   
  81.     Dim mask : mask = &HFF   
  82.     Dim index : index =0   
  83.     Dim i, c0, c1, c2, c3   
  84.     For i = 1 to Len(str) step 4   
  85.         c0 = Instr(ALPHABET, mid(str, i, 1)) - 1   
  86.         c1 = Instr(ALPHABET, mid(str, i + 1, 1)) - 1   
  87.         buffer(index) = (LShift(c0, 2) or RShift(c1, 4)) and mask   
  88.         If buffer(index)>127 Then   
  89.             buffer(index) = buffer(index) - 256   
  90.         End If   
  91.         indexindex = index + 1   
  92.         If(index >= ubound(buffer)) Then   
  93.             Exit For   
  94.         End If   
  95.            
  96.         c2 = Instr(ALPHABET, mid(str, i + 2, 1)) - 1   
  97.         buffer(index) = (LShift(c1, 4) or RShift(c2, 2)) and mask   
  98.         If buffer(index)>127 Then   
  99.             buffer(index) = buffer(index) - 256   
  100.         End If   
  101.         indexindex = index + 1   
  102.         If(index >= ubound(buffer)) Then   
  103.             Exit For   
  104.         End If   
  105.            
  106.         c3 = Instr(ALPHABET, mid(str, i + 3, 1)) - 1   
  107.         buffer(index) = (LShift(c2, 6) or c3) and mask   
  108.         If buffer(index)>127 Then   
  109.             buffer(index) = buffer(index) - 256   
  110.         End If   
  111.         indexindex = index + 1   
  112.     Next   
  113.     vbsBase64Decode = buffer   
  114. End Function   
  115.        
  116. Function LShift(Value, Shift)   
  117.     LShift = sc.Eval(Value & "<<" & Shift)   
  118. End Function   
  119.    
  120. Function RShift(Value, Shift)   
  121.     RShift = sc.Eval(Value & ">>" & Shift)   
  122. End Function   
  123.    
  124. Function uLShift(Value, Shift)   
  125.     uLShift = sc.Eval(Value & "<<<" & Shift)   
  126. End Function   
  127.    
  128. Function uRShift(Value, Shift)   
  129.     uRShift = sc.Eval(Value & ">>>" & Shift)   
  130. End Function   
  131. '转载请说明来源于:http://blog.csdn.net/aminfo/article/details/70478053   
  132. '------------------------------------------   
  133. Function ArrayAdd(byteArray1, byteArray2)   
  134.     Dim i, tmpStr   
  135.     tmpStr = ""   
  136.     For i = 0 to ubound(byteArray1)   
  137.         If i>0 Then   
  138.             tmpStrtmpStr = tmpStr & ","   
  139.         End If   
  140.         tmpStrtmpStr = tmpStr & byteArray1(i)   
  141.     Next   
  142.     For i = 0 to ubound(byteArray2)   
  143.         tmpStrtmpStr = tmpStr & "," & byteArray2(i)   
  144.     Next   
  145.     ArrayAdd = Split(tmpStr, ",")   
  146. End Function   
  147.    
  148. 'Bin字符串转数组   
  149. Function BinToByteArray(szInput)   
  150.     Dim i, byteArray, wch, nAsc   
  151.     byteArray = ""   
  152.     For i=1 To Len(szInput)   
  153.         wch = Mid(szInput, i, 1)   
  154.         nAsc = AscW(wch)   
  155.         'Response.write "<BR>wch = " &  nAsc   
  156.         If nAsc>127 Then   
  157.             byteArraybyteArray = byteArray & "," & (nAsc - 256)   
  158.         Else   
  159.             byteArraybyteArray = byteArray & "," & nAsc   
  160.         End If   
  161.     Next   
  162.     If Left(byteArray, 1) = "," Then   
  163.         byteArray = Right(byteArray, Len(byteArray) - 1)   
  164.     End If   
  165.     BinToByteArray = Split(byteArray, ",")   
  166. End Function   
  167.    
  168. '字符串转数组   
  169. Function StringToByteArray(szInput)   
  170.     Dim i, byteArray, wch, nAsc   
  171.     byteArray = ""   
  172.     For i=1 To Len(szInput)   
  173.         wch = Mid(szInput, i, 1)   
  174.         nAsc = AscW(wch)   
  175.         If nAsc < 0 Then   
  176.             nAscnAsc = nAsc + 65536   
  177.         End If     
  178.         If (nAsc And &HFF80) = 0 Then   
  179.             byteArraybyteArray = byteArray & "," & AscW(wch)   
  180.         Else   
  181.             If (nAsc And &HF000) = 0 Then   
  182.                 byteArraybyteArray = byteArray & "," &  Cint("&H" & Hex(((nAsc \ 2 ^ 6)) Or &HC0)) - 256 & "," & Cint("&H" & Hex(nAsc And &H3F Or &H80))-256   
  183.             Else   
  184.                 byteArraybyteArray = byteArray & "," &  Cint("&H" & Hex((nAsc \ 2 ^ 12) Or &HE0)) - 256 & "," & Cint("&H" & Hex((nAsc \ 2 ^ 6) And &H3F Or &H80)) - 256 & "," & Cint("&H" & Hex(nAsc And &H3F Or &H80)) - 256   
  185.             End If   
  186.         End If   
  187.     Next   
  188.     If Left(byteArray, 1) = "," Then   
  189.         byteArray = Right(byteArray, Len(byteArray) - 1)   
  190.     End If   
  191.     StringToByteArray = Split(byteArray, ",")   
  192. End Function   
  193. '转载请说明来源于:http://blog.csdn.net/aminfo/article/details/70478053   
  194. '数组转字符串   
  195. Function ByteArrayToString(sArray)   
  196.     Dim i, tStr, byte1, byte2, byte3   
  197.     tStr = ""   
  198.     For i = 0 to ubound(sArray)   
  199.         If sArray(i)>0 and sArray(i)<128 Then   
  200.             tStrtStr = tStr & Chr(sArray(i))   
  201.         Else   
  202.             If i < ubound(sArray) - 1 Then   
  203.                 byte1 = ((sArray(i) + 256) And &H3F) * &H40   
  204.                 If byte1<2048 Then   
  205.                     byte1 = ((sArray(i) + 256) And &H3F) * &H40   
  206.                     byte2 = (sArray(i + 1) + 256) And &H3F   
  207.                     tStrtStr = tStr & chrW(byte1 or byte2)   
  208.                     ii = i + 1   
  209.                 Else   
  210.                     byte1 = ((sArray(i) + 256) And &H0F) * &H1000   
  211.                     byte2 = ((sArray(i + 1) + 256) And &H3F) * &H40   
  212.                     byte3 = (sArray(i + 2) + 256) And &H3F   
  213.                     tStrtStr = tStr & chrW(byte1 or byte2 or byte3)   
  214.                     ii = i + 2                  
  215.                 End If   
  216.             End If   
  217.         End If   
  218.     Next   
  219.     ByteArrayToString = tStr   
  220. End Function%>   

来源于:http://blog.csdn.NET/aminfo/article/details/70478053

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器