【问题标题】:RC4 Encryption and decryption in UTF-8 ASP classicUTF-8 ASP经典中的RC4加解密
【发布时间】:2014-01-21 12:48:43
【问题描述】:

有没有办法让它在 ASP 页面中工作? 它在 charset windows-1253 上运行良好,但现在我必须转换我的网站 到 UTF-8,我唯一的问题是加密和解密。我已经加密了会员注册密码,现在使用 UTF-8,解密后密码如下所示:2��8��6

请我帮忙(对不起我的英语)。 这是 RC4 代码:

Dim sbox(255)
   Dim rc4Key(255)

   Sub RC4Initialize(strPwd)

      dim tempSwap, a, b      

      intLength = len(strPwd)

      for a = 0 To 255

         rc4Key(a)  = asc(mid(strpwd, (a mod intLength)+1, 1))

         sbox(a) = a                       
      next

      b = 0

      for a = 0 To 255
         b = (b + sbox(a) + rc4Key(a)) Mod 256         
         tempSwap = sbox(a)
         sbox(a) = sbox(b)
         sbox(b) = tempSwap
      Next

   End Sub

   function EnDeCrypt(plaintxt, psw)      

      dim temp, a, i, j, k, cipherby, cipher      

      i = 0
      j = 0

      RC4Initialize psw

      for a = 1 To Len(plaintxt)
         i  = (i + 1) Mod 256
         j  = (j + sbox(i)) Mod 256
         temp   = sbox(i)
         sbox(i)= sbox(j)
         sbox(j)= temp

         k  = sbox((sbox(i) + sbox(j)) Mod 256)

         cipherby   = Asc(Mid(plaintxt, a, 1)) Xor k
         cipher     = cipher & Chr(cipherby)         
      next

      enDeCrypt = cipher            

   end function

   function RC4EnCryptASC(plaintxt, psw)      

      dim temp, a, i, j, k, cipherby, cipher      

      i = 0
      j = 0

      RC4Initialize psw

      for a = 1 To Len(plaintxt)
         i  = (i + 1) Mod 256
         j  = (j + sbox(i)) Mod 256
         temp   = sbox(i)
         sbox(i)= sbox(j)
         sbox(j)= temp

         k      = sbox((sbox(i) + sbox(j)) Mod 256)

         cipherby   = Asc(Mid(plaintxt, a, 1)) Xor k         
         cipher     = cipher & "|"& cipherby         
      next            

      RC4EnCryptASC = cipher            

   end function

   function RC4DeCryptASC(plaintxt, psw)      

      plaintxt = transformToCHR(plaintxt)

      dim temp, a, i, j, k, cipherby, cipher      

      i = 0
      j = 0      

      dim arrayEncrypted            

      RC4Initialize psw         

       for a = 1 To Len(plaintxt)
         i  = (i + 1) Mod 256
         j  = (j + sbox(i)) Mod 256
         temp   = sbox(i)
         sbox(i)= sbox(j)
         sbox(j)= temp

         k  = sbox((sbox(i) + sbox(j)) Mod 256)

         cipherby   = Asc(Mid(plaintxt, a, 1)) Xor k
         cipher     = cipher & Chr(cipherby)         
      next

      RC4DeCryptASC = cipher                       

   end function

function transformToCHR(plaintxt)


      dim returnText, arrayEncrypted
      arrayEncrypted = split(plaintxt, "|")            

      returnText=""            

      for a = 1 to ubound(arrayEncrypted)         
         returnText=returnText&CHR(arrayEncrypted(a))         
      next            

      transformToCHR = returnText
end function

【问题讨论】:

    标签: encryption utf-8 asp-classic rc4-cipher


    【解决方案1】:

    我认为您必须使用 AscW 函数和等效的其他函数来处理 Unicode 字符?

    【讨论】:

    • 好的,但 Unicode 代码点将不同于 Windows-1253(扩展 ISO-8859-1 拉丁文)点的值。
    • 我将使用此脚本和 Windows-1253 解密密码,然后在不加密的情况下存储在数据库中。然后我将站点转为 UTF-8,然后我将使用由 AscW 函数编辑的脚本进行加密。但是我如何在脚本中添加 AscW 函数???
    • @WebStyler ascw等内置vbscript函数
    • 更多帮助会更好。在上面的脚本中我必须把 AscW () 放在哪里?我调用函数 RC4EnCryptASC 和 RC4DeCryptASC。
    • 人是你的脚本还是你复制和粘贴的?你必须表现出一些努力,我不会为你做这项工作。在第一个循环的 RC4Initialize 函数中调用 asc
    【解决方案2】:

    好吧,我终于成功了。 我只是将每个 asc 替换为 ascW 并且每个 chr 到 chrW 都可以完美运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多