我从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²çÅÅ
答案 0 :(得分:2)
RC4是一个流密码,因此它使用XOR进行加密。运行RC4会生成一个随机查找的字节密钥流。
加密你做:
明文XOR密钥流 - >密文
要解密,请执行以下操作:
密文XOR密钥流 - >明文
在这两种情况下,密钥流都是相同的,使用相同的密钥从RC4生成。
答案 1 :(得分:1)
密码未加密,因此您无法解密。
数据已加密。要解密它,您需要密码,并使用加密文本和原始密码(用于加密它的密码)运行相同的功能。
答案 2 :(得分:0)
根据Wikipedia,解密RC4所需要做的就是使用相同的密钥再次运行相同的功能。