Задать вопрос
@Nick5708

Как расчитать подпись хэша в 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
Кто может памагити
  • Вопрос задан
  • 310 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Roman_V_M
Чисто на стандартной библиотеке:
import hmac
import hashlib
import json


h = hmac.new(b'top-secret', json.dumps({'version': 1.0}).encode('utf-8'), hashlib.sha512)
print(h.hexdigest())

Результат:
fb909103d8177205a227a1f58079e4bda61be8e32faa71cd1ae17487651b42c3676073f827d208b53e8198ca231a3259cafeeb7521932e6e1f4ac7d177055d09
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
planc
@planc
jws заброшенный пакет

https://github.com/jpadilla/pyjwt/
https://jwt.io/

import jwt

encoded = jwt.encode({'version': '1.0'}, 'top-secret', algorithm='HS512')

print(encoded.decode('utf-8'))

decoded = jwt.decode(encoded, 'top-secret', algorithm='HS512')

print(decoded)


eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJ2ZXJzaW9uIjoiMS4wIn0.g8WHzL-OziecG-V7YC4beC7BBT7mCwhP3dmzaWfB4Esjw_Qx_BXp8MKn4iRqxlob3zX9fQzEJlmsEJIQKIcqZQ

{'version': '1.0'}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы