Как расчитать подпись хэша в Python 3? Например, наш секретный ключ – top-secret. Наш JSON-запрос – {"version": 1.0}. Подпись в этом случае будет формироваться как HMAC sha512. Подпись: fb909103d8177205a227a1f58079e4bda61be8e32faa71cd1ae17487651b42c3676073f827d208b53e8198ca231a3259cafeeb7521932e6e1f4ac7d177055d09
Как реализовать это на Python 3?
Я пытался, но "оно" работает не такimport jws
header = {'alg': 'HS512' }
payload = {'version': 1.0}
signature = jws.sign(header, payload, 'top-secret')
print(signature)
Это выдаёт LIFRnPatzo36ak_DHzkkqfrW-leq5gr_Tv3OWL7hrXExLo4P2qcDqUyK_UON6E6VfAy04ROYcprK7yOndopI3g
Кто может памагити

21 Авг 2019 в 07:11
179 +1
0
Ответы
1

Ваш код почти верный, но вы используете неправильную библиотеку. Для вычисления HMAC SHA512 подписи в Python 3 вам следует использовать библиотеку hashlib, а не jws. Вот как вы можете это реализовать:

import json
import hmac
import hashlib
key = b'top-secret'
data = {"version": 1.0}
data_str = json.dumps(data).encode('utf-8')
signature = hmac.new(key, data_str, hashlib.sha512).hexdigest()
print(signature)

Этот код использует модуль hmac для вычисления HMAC с использованием SHA512 и модуль hashlib для хеширования. Он преобразует словарь данных в строку JSON, кодирует ее в байты и затем вычисляет подпись. Распечатанный результат будет таким же, как вы указали в вашем вопросе.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 157 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир