[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
2022-01-09 15:41:35
質問
コードは次のとおりです。
import hashlib, sys
m = hashlib.md5()
hash = ""
hash_file = input("What is the file name in which the hash resides? ")
wordlist = input("What is your wordlist? (Enter the file name) ")
try:
hashdocument = open(hash_file, "r")
except IOError:
print("Invalid file.")
raw_input()
sys.exit()
else:
hash = hashdocument.readline()
hash = hash.replace("\n", "")
try:
wordlistfile = open(wordlist, "r")
except IOError:
print("Invalid file.")
raw_input()
sys.exit()
else:
pass
for line in wordlistfile:
# Flush the buffer (this caused a massive problem when placed
# at the beginning of the script, because the buffer kept getting
# overwritten, thus comparing incorrect hashes)
m = hashlib.md5()
line = line.replace("\n", "")
m.update(line)
word_hash = m.hexdigest()
if word_hash == hash:
print("Collision! The word corresponding to the given hash is", line)
input()
sys.exit()
print("The hash given does not correspond to any supplied word in the wordlist.")
input()
sys.exit()
で実行すると Python 3.2.2です。 エラーが発生しました。
Traceback (most recent call last):
File "python_md5_cracker.py", line 27, in <module>
m.update(line)
TypeError: Unicode-objects must be encoded before hashing
解決方法は?
の文字エンコーディングを検索しているのでしょう。
wordlistfile
.
wordlistfile = open(wordlist,"r",encoding='utf-8')
あるいは、一行単位で作業する場合。
line.encode('utf-8')
EDIT
下のコメントと この回答 .
上記の私の回答は、希望する出力が
str
から
wordlist
ファイルを作成します。での作業に慣れているのであれば
bytes
を使用したほうがよいでしょう。
open(wordlist, "rb")
. しかし、覚えておいてほしいのは、あなたの
hashfile
が必要です。
NOT
使用
rb
の出力と比較するのであれば
hexdigest
.
hashlib.md5(value).hashdigest()
を出力します。
str
であり、bytesオブジェクトと直接比較することはできない。
'abc' != b'abc'
. (この話題はもっとたくさんあるのですが、ATMの時間がないので).
また、この行にも注意が必要です。
line.replace("\n", "")
おそらく
line.strip()
これでbyteでもstrでもうまくいきます。しかし、もし単純に
bytes
という行に変更すればよい。
line.replace(b"\n", b"")
関連
-
opencvとpillowを用いた顔認証システム(デモあり)
-
python call matlab メソッドの詳細
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み] オブジェクトの属性に基づいてオブジェクトのリストを並べ替えるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python カメの描画コマンドとその例
-
Python入門 openを使ったファイルの読み書きの方法
-
PythonによるExcelファイルの一括操作の説明
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].