如何为RC4算法创建解密函数

时间:2012-04-13 08:50:51

标签: asp.net algorithm function encryption vbscript

我从http://personalsources.com/includes/functions.asp为ASP提取此代码并将其编码为RC4,编码功能为:

function rc4(byref thestr, byref thekey)
  dim asciiarray(255)
  dim keyarray(255)
  if isnull(thestr) then exit function
  if len(thekey)=0 then exit function
  if len(thestr)=0 then thestr=" "
  if len(thestr)=0 then exit function
  zxlen=len(thekey)
  for ipos=0 To 255
    keyarray(ipos)=asc(mid(thekey, ((ipos) Mod (zxlen)) + 1, 1))
  next
  for ipos=0 To 255
    asciiarray(ipos)=ipos
  next
  vpos=0
  for ipos=0 To 255
    vpos=(vpos + asciiarray(ipos) + keyarray(ipos)) Mod 256
    tempa= asciiarray(ipos)
    asciiarray(ipos)=asciiarray(vpos)
    asciiarray(vpos)=tempa
  next
  ipos=0
  vpos=0
  for rcx=1 To len(thestr)
    ipos=(ipos + 1) Mod 256 
    vpos=(vpos + asciiarray(ipos)) Mod 256
    tempb=(asciiarray(ipos) + asciiarray(vpos)) Mod 256
    tempa=asciiarray(ipos)
    asciiarray(ipos)=asciiarray(vpos)
    asciiarray(vpos)=tempa
    tempc=asciiarray(tempb)
    rc4=rc4 & chr(asc(mid(thestr, rcx, 1)) xor tempc)
  next
end function

你知道我们是否有加密密钥(RC4)所以我们可以很容易地解密密码,但我不知道这个函数如何加密密码?这个函数的确切算法是什么?这可以写一个函数来解密这个RC4密码吗?


例如,此函数的加密密码是这样的(它永远不会像RC4密码!!!):

>r²çÅÅ

3 个答案:

答案 0 :(得分:2)

RC4是一个流密码,因此它使用XOR进行加密。运行RC4会生成一个随机查找的字节密钥流。

加密你做:

  

明文XOR密钥流 - >密文

要解密,请执行以下操作:

  

密文XOR密钥流 - >明文

在这两种情况下,密钥流都是相同的,使用相同的密钥从RC4生成。

答案 1 :(得分:1)

密码未加密,因此您无法解密。

数据已加密。要解密它,您需要密码,并使用加密文本和原始密码(用于加密它的密码)运行相同的功能。

答案 2 :(得分:0)

根据Wikipedia,解密RC4所需要做的就是使用相同的密钥再次运行相同的功能。