Преобразование Crypto JS Base64 Encode в Python - PullRequest
1 голос
/ 12 февраля 2020

У меня есть следующий фрагмент кода, который просто кодирует значение в Base64, используя javascript:

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
<script>
var magic = "TEST";

var magic1 = CryptoJS.MD5(magic).toString(CryptoJS.enc.Base64);
document.write(magic1);

</script>

Вывод из приведенного выше приводит к:

AzvZSxFo1+Tw1kTDyV41vw==

Теперь, когда я хочу сделать то же самое в python Я получаю другой результат:

import hashlib
import base64

magic = "TEST"
magic = hashlib.md5(magic.encode())
magic = magic.hexdigest()  
magic1= base64.b64encode(magic.encode())
print(magic1)

Вывод из приведенного выше приводит к:

   MDMzYmQ5NGIxMTY4ZDdlNGYwZDY0NGMzYzk1ZTM1YmY=

Почему я получаю два разных результата base64 для точно такой же строки? Как мне адаптировать мой python код для работы тогда?

РЕДАКТИРОВАТЬ Я сделал полное обновление, как предлагается, который показывает рабочий код для обоих экземпляров. Я хотел бы понять, почему существует разница между java и python результатом. Как я могу получить такой же результат на python.

1 Ответ

0 голосов
/ 12 февраля 2020

Решить проблему.

import hashlib
import base64

magic = "TEST"
magic = hashlib.md5(magic.encode())
magic = magic.digest()  
magic1= base64.b64encode(magic)
encodedStr = str(magic1, "utf-8")
print(str(encodedStr))

Изменение заключалось в том, чтобы не использовать digesthex, а вместо этого использовать digest:

AzvZSxFo1+Tw1kTDyV41vw==

Приведенная ниже ссылка помогла в решении моей проблемы:

Python, получить кодированный в base64 MD5 га sh объекта изображения

...