哈希中的最后四位数字必须相同

问题描述 投票:0回答:1

我有一个编码挑战,我需要哈希中的最后四个字符是相同的字符。 首先我有一个单词,然后我必须添加后缀以给我末尾带有四个字符的哈希值。

后缀必须是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”进行编码:不允许代理

python hash sha256
1个回答
0
投票

该特定字符和某些其他字符无法用 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
    # ...
© www.soinside.com 2019 - 2024. All rights reserved.