Пожалуйста, примите этот вопрос от неопытного (и очень увлеченного) программиста, который пытается научиться:
Мне нужно рассчитать хэши md5 каждой комбинации байтов от 0x00 до 0xff. Я пытался сделать это с помощью Python, но я не уверен, как Python интерпретирует мой ввод. Как уже было сказано, мне нужно хэшировать значения байтов, а не символ «fa» или «00», а сами значения.
Вот пример одного кода, который я тестировал. Проблема в том, что выходные данные bytes.fromhex показывают некоторые шестнадцатеричные числа, представленные как ascii. Тогда я предполагаю, что хешируется ascii-представление, а не значение байта. Вторая проблема заключается в том, что я не уверен, как правильно использовать hashlib, чтобы значение байта хешировалось.
импортировать хеш-библиотеку
# Global variables
HEX_VALUES = {0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"a",11:"b",12:"c",13:"d",14:"e",15:"f"}
# Helper function for converting decimal number to another base.
def dec_to_base(num,base):
exp = 0
list1 = []
while (num // base ** exp) > 0:
num2 = (num // base ** exp) % base
list1.insert(0,num2)
exp += 1
return list1
# Function for converting decimal to hex numbers.
def dec_to_hex(num):
ret_val = []
for x in dec_to_base(num,16):
x = HEX_VALUES[x]
ret_val.append(x)
ret_val_str = ''.join(ret_val)
ret_val_str_pad = ret_val_str.zfill(4)
# Returns the hex number as a string with four zero-padding.
return ret_val_str_pad
for i in range(1,65536):
hex_number = bytes.fromhex(dec_to_hex(i))
print(hex_number)
h = hashlib.md5(hex_number)
md5_hash = h.hexdigest()
print(md5_hash)
# Checks after TARGET STRING
00
,print(00) >> 0
- person Maurice Meyer   schedule 26.03.2021hashlib.md5
— это байтовый объект. Строки — это не то же самое, что байты. См. строки и подобные байтам объекты - person President James K. Polk   schedule 26.03.2021