yoonghm:
パイソンから生成MD4ハッシュコードは、オンラインとは異なります。私はそれがエンコーディングによるものである必要があります知っています。手伝ってくれますか?
from Crypto.Hash import MD4
psk = 'The quick brown fox jumps over the lazy dog'
h = MD4.new()
h.update(psk.encode('UTF-16LE'))
print(f'UTF-16LE: {h.hexdigest()}')
h.update(psk.encode('UTF-16'))
print(f'UTF-16: {h.hexdigest()}')
h.update(psk.encode('UTF-8'))
print(f'UTF8: {h.hexdigest()}')
h.update(psk)
print(f'UTF8?: {h.hexdigest()}')
別のエンコーディングで「速い茶色のキツネは、のろまなイヌに飛びかかっ」のハッシュ出力は、次のとおりです。
UTF-16LE: 4e6a076ae1b04a815fa6332f69e2e231
UTF-16: db8ae265b09c6ffa1e2fc163d66f64a4
UTF8: 324563ee68cc8009c82778d70d958723
UTF8?: 1aaf934b705b1d2aab69b0cf2a9cd87b
オンラインMD4ハッシュ関数は、(https://emn178.github.io/online-tools/md4.html)与えるだろう
1bee69a46ba811185c194762abaeae90
アップデート:
コメントありがとうございました、私は、コードを更新しました:
import getpass
from Crypto.Hash import MD4
psk = 'The quick brown fox jumps over the lazy dog' #getpass.getpass()
h = MD4.new(data=psk.encode('UTF-16LE'))
print(f'UTF-16LE: {h.hexdigest()}')
h = MD4.new(data=psk.encode('UTF-16'))
print(f'UTF-16: {h.hexdigest()}')
h = MD4.new(data=psk.encode('UTF-8'))
print(f'UTF8: {h.hexdigest()}')
h = MD4.new(data=psk)
print(f'UTF8?: {h.hexdigest()}')
新しい出力があります
UTF-16LE: 4e6a076ae1b04a815fa6332f69e2e231
UTF-16: c6274a58a30e434503b45d2ce95e6c19
UTF8: 1bee69a46ba811185c194762abaeae90
UTF8?: 1bee69a46ba811185c194762abaeae90
また、私はことを発見しhttps://emn178.github.io/online-tools/md4.html私はそれをUTF-16LEエンコーディングでファイルを渡されていても使用UTF-16。
WPA2エンタープライズは、テキストがUTF-16LEでエンコードされている必要があります。
bechtold:
アップデートにより、あなたは明らかにあなたがあなたのメッセージをより多くの作品に餌を意味し、ハッシュを更新します。実際には、最終的にちょうどあなたの文字列よりも多くのハッシュを与える異なるエンコーディングを文字列に複数回を供給しているあなたはとても。
あなただけの更新場合は、期待どおりの結果を得ることができます一度。
from Crypto.Hash import MD4
psk = 'The quick brown fox jumps over the lazy dog'
h = MD4.new()
h.update(psk.encode('UTF-8'))
print(f'UTF8: {h.hexdigest()}')
そこからダイジェストの文書から、hexdigest
方法は誘導体であります:
渡された文字列のダイジェストを返し
update()
、これまでの方法。これは文字列でdigest_size
はnullバイトを含む非ASCII文字を含んでいてもよいバイト。