Соответствие CryptoJS.SHA256 () с hashlib.sha256 () для JSON - PullRequest
0 голосов
/ 15 февраля 2019

Как часть стандарта IEFT, мне нужно хэшировать тело запроса JSON.

У меня есть справочный код в JS, который, как известно, производит правильный хеш, но теперь я застрял ссоответствие результата в Python.

Тело JSON:

body = {"description":"Test ticket"}

Код JS:

bodyHash = CryptoJS.SHA256(body).toString(CryptoJS.enc.Base64)

Обратите внимание, что это не JSON.stringify(body)!«Правильный» хэш (тот, который я ищу, чтобы соответствовать):

TqXFCKZWbnYkBUP4/rBv1Fd3e+OVScQBZDav2mXSMw4=

Решение Python должно быть таким:

body_hash = base64.b64encode(hashlib.sha256(repr(body).encode('utf-8')).digest()).decode('ascii')

, который производит что-то другое:

z0RpYmKAIfVibpSLJx/iRDZaNHJkJ2+rcenc1KEEAUw=

Есть ли способ сопоставить эти хэши?Как хэшируется объект JS в CryptoJS?

...