Есть функция на ЯваСкрипте
CryptoJS.AES.encrypt(JSON.stringify(data), d, {format: CryptoJSAesJson}).toString()
На выходе выдает разные значения, например, "{"ct":"WRGouUKxcFHLSGReAWBNLg==","iv":"d32fe4b7635f0290e8a99114c9d01fe8","s":"e571997ee26f1c47"}"
Как мне сделать то же самое на python?
upd: Перепробовал десятки различных комбинаций и до сих пор мне не удалось добиться точно такого же результата, что получает функция CryptoJS.AES.encrypt. Как я понимаю, по умолчанию, она использует AES.MODE_ECB шифрование и паддинг по принципу pkcs7
Например, возьмем такие входные данные для JS:
var data = 'abc';
var d = 'zs0aneq7neem';
CryptoJS.AES.encrypt(JSON.stringify(data), d, {format: CryptoJSAesJson}).toString();
получим результат "{"ct":"0PhO/O4UezpeOK9+2Bj7Lg==","iv":"ec0b83442cdb700036a7ce7b5248df28","s":"0c53a0dd5a3ccdc3"}"
по идее для питона то же самое должно получиться в следующих строках
from Crypto.Cipher import AES
import base64, pkcs7
pad_text = pkcs7.PKCS7Encoder().encode('abc')
IV = 'ec0b83442cdb700036a7ce7b5248df28'
pad_key = pkcs7.PKCS7Encoder().encode('zs0aneq7neem')
aes = AES.new(pad_key, AES.MODE_ECB, IV)
res = base64.b64encode(aes.encrypt(pad_text))
но результат в res другой: 'Pp3wAckR5aFeAVipqVpFhw=='
возможно вместо pad_key надо использовать фактическую секретную фразу, т.е. "0c53a0dd5a3ccdc3", но и в этом случае мы получаем 'LhVrW1duY+0Jh1ucE/FEsg==', что отличается от результата яваскрипт.
На питоне можно отлично шифровать:
AES:
AES 256 English Stackoverflow
AES 128 Habr
RSA Module: https://pypi.org/project/rsa/
PyCrypto Module: https://pypi.org/project/pycrypto/
Cryptography module:https://pypi.org/project/cryptography/
Легкое гуглиние даст кучу всего по шифрованию, криптологии и криптоанализу на питоне.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нашел в интернете скрипт на JavascriptЧто-то типо поисковика
Я отменяю событие если поля пустые и когда они не будут пустые хочу включить событие
Я изучаю JavaScript, купил для этого книгиИ вот дошел к разделу "Функции в качестве аргумента другой функции"
Видел такое решение в некоторых интернет-магазинах: для изображения добавляется контейнер, при вставке изображения в контейнер оно растягивается...