2016-12-15 10 views
0

おはよう、 TXTファイルからMD5ハッシュを作成しました。新しい値を挿入するファイルの内容を変更した後、MD5ハッシュを再度作成しようとしましたが、値は変更されませんでした。私は何ができますか?PythonでTXTファイルを変更した後の新しいMD5ハッシュ

マイコード:

  • 符号化規則は、 'ISO-8859-1' でなければなりません
  • すべて:私のような、このハッシュを構築するために、いくつかの要件に従う必要

    from hashlib import md5 
    
    open_file = open('N0003966.290', 'r', encoding='ISO-8859-1') 
    file = open_file.read().lower().rstrip('\n\r ').strip('\n\r') 
    
    m = md5() 
    m.update(b'file') 
    print(m.hexdigest()) 
    

    文字は 小文字である必要があります。

  • ハッシュビルディングで改行文字とキャリッジリターン文字を考慮しないでください。
+0

実際にファイルオブジェクトまたは文字列 'file'を使用していますか? – doctorlove

答えて

1

ファイルの内容ではなく、'file'という文字列でupdateを呼び出しています。

from hashlib import md5 

open_file = open('N0003966.290', 'r', encoding='ISO-8859-1') 
file_content = open_file.read().lower().rstrip('\n\r ').strip('\n\r') 

m = md5() 
m.update(file_content.encode('ISO-8859-1')) 
print(m.hexdigest()) 

また、私は(組み込みの名前を上書きする悪い習慣です)file_contentして変数fileを置き換える注意:この代わりにしてください。

+0

このコードも試しましたが、変数名の後ろに 'b'を置かないと、エラーが出ます: TypeError:ハッシュする前にUnicodeオブジェクトをエンコードする必要があります –

+0

ああ、正しくエンコードする必要があります文字列。私の編集で試してみてください。 – DevShark

+0

txtファイルを変更した後、新しいハッシュが正しく生成されています。期待ハッシュは作成されませんでしたが、私は試し続けます。ありがとう@DevShark –

1
m.update(b'file') 

この行が問題です。ファイル内のデータではなく、バイトで表される文字列 'file'の関数を呼び出しています(たとえば、this questionを参照してください)。

あなたは

m.update(file) 

に置き換える場合は、DevSharkが指摘するように、あなたはまた、すでに独自の持っていない何かにその変数の名前を変更する必要があり、が、あなたは(必要な結果を取得する必要があります意味)。

0
m.update(file.encode('ISO-8859-1')) 
0

このコードはPython 2.7でも動作します。

from hashlib import md5 

open_file = open('a.txt', 'r') 
file = open_file.read().lower().rstrip('\n\r ').strip('\n\r') 

m = md5() 
m.update(file) 
print(m.hexdigest()) 

m.update(b'file')
は、エラーがm.update(file)と交換してくださいました場所です。

関連する問題