Взятие SHA-256 шестнадцатеричного литерала
Использование Python 3 со встроенным модулем hashlib.
Мне удобно использовать хеши типа sha-256 в строках с кодом вроде:
import hashlib
SHA256 = hashlib.new('sha256')
plaintext = ''
SHA256.update(bytes(plaintext, 'utf-8'))
print(SHA256.hexdigest())
#Output should be:
#=> e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
#Output actually is:
#=> e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
или что-то вроде этого:
hextext = '0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6'
SHA256.update(bytes(hextext, 'utf-8'))
print(SHA256.hexdigest())
#Output should be:
#=> 32511e82d56dcea68eb774094e25bab0f8bdd9bc1eca1ceeda38c7a43aceddce
#Output actually is:
#=> 32511e82d56dcea68eb774094e25bab0f8bdd9bc1eca1ceeda38c7a43aceddce
но мне нужно на самом деле взять хеш значения hextext, такой что:
hexLiteral = 0x0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6
SHA256.update(FOOBAR(hexLiteral))
print(SHA256.hexdigest())
#Output should be:
#=> 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
Где FOOBAR() будет функцией, которая позволяет update() принимать числа вместо строк, которые я сейчас использую,
или же
Где FOOBAR() будет принимать строку наподобие hextext, но будет выводить ее так, как если бы в хеш вводился hexLiteral, т. Е. ->
hextext = '0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6'
SHA256.update(FOOBAR(hextext))
print(SHA256.hexdigest())
#Output should be:
#=> 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
(Я бы предпочел последний метод).
Я не могу на всю жизнь понять, как сделать FOOBAR() таким, чтобы хеш выдает правильный результат:
#=> 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
когда дано либо входные данные hextext или hexLiteral,
Как мне это сделать?
TL; DR: мне нужно взять SHA256 из буквального числа в Python 3, используя модуль hashlib.
input = 0x0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6
function_sha256(input)
#Returns => 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408