我有一个编码挑战,我需要哈希中的最后四个字符是相同的字符。 首先我有一个单词,然后我必须添加后缀以给我末尾带有四个字符的哈希值。
后缀必须是utf-8且不超过1024,这是我能想到的最好的:
import hashlib
def find_hash_flag(word):
for i in range(1000023):
new_word = word + chr(i) # Append a character with ASCII value i
hashed = hashlib.sha256(new_word.encode()).hexdigest()
if hashed[-4:] == "eeee":
print(hashed)
return new_word
return None
word = "orthosemidin"
modified_word = find_hash_flag(word)
if modified_word:
print(modified_word)
else:
print("you failed misereably")
但是这使得字符无法以 utf-8 进行编码
文件“D:\x\x\x\lvl15.py”,第 14 行,位于 修改后的字 = find_hash_flag(字) ^^^^^^^^^^^^^^^^^^^^^^ 文件“D:\x\x\x\lvl15.py”,第 7 行,位于 find_hash_flag 中 哈希 = hashlib.sha256(new_word.encode()).hexdigest() ^^^^^^^^^^^^^^^^^^ UnicodeEncodeError:“utf-8”编解码器无法对位置 12 中的字符“\ud800”进行编码:不允许代理
该特定字符和某些其他字符无法用 UTF-8 进行编码。只需跳过它们即可。
for i in range(1000023):
try:
new_word = word + chr(i) # Append a character with ASCII value i
hashed = hashlib.sha256(new_word.encode()).hexdigest()
except UnicodeEncodeError:
continue
# ...