0

ASP 用のこのコードをhttp://personalsources.com/includes/functions.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²çÅÅ
4

3 に答える 3

2

RC4はストリーム暗号であるため、XORを使用して暗号化します。RC4を実行すると、ランダムに見えるバイトのキーストリームが生成されます。

暗号化するには:

平文XORキーストリーム->暗号文

復号化するには:

暗号文XORキーストリーム->平文

どちらの場合も、キーストリームは同じであり、同じキーを使用してRC4から生成されます。

于 2012-04-13T10:32:13.270 に答える
1

パスワードは暗号化されていないため、復号化できません。

データは暗号化されています。暗号化を解除するには、パスワードが必要です。暗号化されたテキストと元のパスワード (暗号化に使用されたパスワード) を使用して同じ関数を実行します。

于 2012-04-13T08:55:31.627 に答える
0

Wikipediaによると、RC4 を復号化するために必要なことは、同じキーを使用して同じ関数を再度実行することだけです。

于 2012-04-13T08:54:55.817 に答える