Ternick
@Ternick

Как расшифровать и зашифровать aes-128-cbc, так же как и CryptoJS?

Шифруется так:
CryptoJS.AES.encrypt('Plain Text', 'password').toString()

Результат:
U2FsdGVkX1/lXDct6Gdc+rxKuhSvS6035ZYKeh1DLaY=

Расшифровать средствами того же CryptoJS всё просто. Вопрос в том, как его расшифровать средствами Crypto.Cipher.AES.
Из моих наблюдений, зашифрованный текст имеет интересную структуру, в частности префикс Salted__ и дальше на сколько я понимаю идут n байтов хэша. А затем уже идёт сам зашифрованный текст.

Мой вариант:
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import unpad
from Crypto.Cipher import AES
from base64 import b64decode

#CBC mode with random IV

iv =  get_random_bytes(16)

def decrypt(enc, key, iv):
    enc = b64decode(enc)
    cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, b64decode(iv))
    return unpad(cipher.decrypt(enc), 16)


Но проблема в том, что CryptoJS не использует выравнивание на сколько я понимаю.

Так же интересен вопрос, как текст зашифровать так же, как и CryptoJS.
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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