0

記載されているパスワード非表示の現在の実装を強化しようとしています

私はそれを間違って使用していますか?以下は私のコードです:

import hashlib
import binascii
def Encrypt_Pass(password, authenticator, secret):
        m = hashlib.md5()
        m.update(secret+authenticator)
        return "".join(chr(ord(x) ^ ord(y)) for x, y in zip(password.ljust
       (16,'\0')[:16], m.digest()[:16]))
result = Encrypt_Pass("abcd1","344c71c77a2b845b8856ffa968740b73","sharedsecret")
ciphertext = "6ed3a35440abe69b2e8698109b809932"#plaintext is cisco123
print result.encode("hex")

結果を以下に示します。

2509f347a7c5bde3977bb944ae0eb89a

ご覧のとおり、返された暗号文は、取得した暗号化されたパスワードと一致しません。コードを間違って使用していますか? 使用された平文のパスワードと共有キーが正確であることを確認しました。

誰かが私を正しい方向に向けることができれば感謝します。

4

1 に答える 1

3

オーセンティケーターは 16 進文字列です。バイナリ文字列に変換する必要があります。

import hashlib
from binascii import a2b_hex

def Encrypt_Pass(password, authenticator, secret):
    m = hashlib.md5()
    m.update(secret + a2b_hex(authenticator))
    return "".join(chr(ord(x) ^ ord(y)) for x, y in zip(password.ljust
       (16,'\0')[:16], m.digest()[:16]))

result = Encrypt_Pass("cisco123","344c71c77a2b845b8856ffa968740b73","sharedsecret")
ciphertext = "6ed3a35440abe69b2e8698109b809932"#plaintext is cisco123
print result.encode("hex")
于 2016-03-26T02:55:44.573 に答える