次の関数は、EncryptPassword関数に渡すと元のパスワードと同じ暗号化文字列で終わる文字列のパスワードを返します。
Function DecryptPassword(vPwd)
vTempPwd = ""
DecryptPassword = ""
For i = 1 To Len(vPwd)
vTempPwd = vTempPwd & Chr((255 - Asc(Mid(vPwd, i, 1)) * 2))
Next
DecryptPassword = vTempPwd
End Function
注:各文字は、少なくとも1つの「衝突」の文字を持っているとして、それは必ずしも、元のパスワードとまったく同じ文字列をあなたに戻って与えることはありませんそれは、彼らが同じ値に暗号化しますということです。また、EncryptPassword関数は少なくとも10文字にパディングしますので、元のパスワードが短ければ、同じ文字列に暗号化する10文字の文字列になります。以下は
は私がします。cscript
pw1 = "password1234"
pwC1 = EncryptPassword(pw1)
pw2 = DecryptPassword(pwC1)
pwC2 = EncryptPassword(pw2)
If pwC1 = pwC2 Then
WScript.Echo pw1 & " and " & pw2 & " cipher to the same value off " & pwC1
else
WScript.Echo pw1 & " chipher is " & pwC1 & " and " & pw2 & " cipher is " & pwC2
End If
Function EncryptPassword(vPwd)
vTempPwd = ""
EncryptPassword = ""
For i = 1 To Len(vPwd)
vTempPwd = vTempPwd & Chr((255 - Asc(Mid(vPwd, i, i)))/2)
Next
For i = Len(vPwd) + 1 To 10
vTempPwd = vTempPwd & CStr(i - Len(vPwd))
Next
EncryptPassword = vTempPwd
End Function
Function DecryptPassword(vPwd)
vTempPwd = ""
DecryptPassword = ""
For i = 1 To Len(vPwd)
vTempPwd = vTempPwd & Chr((255 - Asc(Mid(vPwd, i, 1)) * 2))
Next
DecryptPassword = vTempPwd
End Function
注意を使用して.vbsファイルを実行してテストした完全なスクリプトです:元の質問のコメントのノートに言われたとおりAsc(Mid(vPwd, i, i))
もAsc関数としてAsc(Mid(vPwd, i, 1))
することができとにかく最初の文字だけを解析します。
あなたは数日前にアドバイスを無視しましたか? - どの暗号化の形式がこのasp関数で使われているのか?](http://stackoverflow.com/q/38127127/692942)。私はそれを言いました、そして今私はそれを言いますが、暗号化ではなく、文字の置き換えが難読化され、簡単に破られるということです。 **任意の** Webアプリケーションでこれを使用すべきではありません。 – Lankymart
@Lankymart:私の上司は、いつも愚かなことをするように私に頼みます。時々、私は彼の棚から彼と話すことができます。他の時代、私は自分のプライドを飲み込んで自分のやり方でやらなければなりません。それは私のものではなく、彼の会社です。あなたが同じ船にいないなら、あなたの祝福を数えてください。しかし、それほど幸運ではない私たちの人たちから離れる。 – Martha
@Marthaは愚かなことをすることを頼まれていますが、会社が責任を負うことになる可能性がある危険なことをするよう求められていることは、まったく別です。ユーザーがパスワードを暗号化するための暗号化を悪用している場合、そのセキュリティは何ですか?顧客の詳細、支払い情報など...ちょうどそれをしないとあなたの上司に理由を説明してください。これ以外にも、質問/回答がOPだけに利益をもたらすインターネットコミュニティがあるので、明らかにそうでないときに暗号化と考えている人はいないだろう。 – Lankymart