Не удалось расшифровать зашифрованный файл AES с помощью Javascript с использованием OpenSSL - PullRequest
1 голос
/ 08 октября 2019

Зашифрованный текст зашифрован Javascript с использованием алгоритма AES в шестнадцатеричном формате. Сначала я закодировал его в Base64, а затем расшифровал, используя OpenSSL.

Но это не удалось, я не знаю, где это неправильно.

И я использую скомпилированную для Windows версию OpenSSL. http://gnuwin32.sourceforge.net/packages/openssl.htm

Команда выглядит следующим образом:

openssl enc -aes-128-cbc -a -A -in Cipherbase64.txt -out PlainText.txt -K 31323334353637383930303030303030 -iv 31323334353637383930303030303030 -d

Результат:

bad decrypt
6396:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:./crypto/evp/evp_enc.c:461:

Шифротекст (HEX)

4cb4eb49df960e82c14e158ac418ca918736e4fbb730f532fc37d226e0e8b0e3ce0571ce4c146a6a9e037b9b79d8077568326d7fe2a3f9a91d266cfeb8bfac5668f526bc4d5ee1a21cbe85c8efab8cd1fe29b4a2b412468c6d97b7a3bfd2f69c50691e181fde43710bc61ffff2c6e7cbab59de70b97d993707c16e4a909273cc873d9156dda0ad03214e29048ac39532b8ec11c071174219fefa85e0d489468036154d19d2b683b20b07589abb9f4d863fcd17598d43a8b82d37236ceee7588d08a22f4c9662bba7f4cf6595f28b0e7b7e62f9be2d42f1b11f5c06aca7ed7568d8922d9155c229a8d57b251695c2bd645cb44539e4278b4431ac60a318fbd22afe18b204f9730f86a07c43355ce89f9646be5810e0c6bd2043066d359efe73c8e0ac7f581e048ed1809ad2720ea96f528d0acc7fd622b86d3073e8b1ac0b5d70f4e92b045e8cdf1fb6c999332ba2c279ebab2262589082a8214187a8904671a2c4eec8828335dc7f49fe438fb4e34c762e9f7febe30672a9ced8b0a2b66373d3a3b9efbe46e63f4d8b2723ebe85736f5

БлагодаряТопако за вашу помощь. Из-за моей небрежности, ошибка CTR для CBC, вызывая путаницу.

1 Ответ

3 голосов
/ 08 октября 2019

Вы можете попробовать следующее:

openssl enc -aes-128-cbc -a -A -in Cipherbase64.txt -out PlainText.txt -K 31323334353637383930303030303030 -iv 31323334353637383930303030303030 -d

После параметров -K и -iv ввод должен представлять собой шестнадцатеричную строку, т. Е. Вместо 1234567890000000 необходимо использовать 31323334353637383930303030303030,Опция -A говорит о том, что зашифрованный текст в кодировке Base64 содержится в одной строке, здесь . Поэтому нет необходимости использовать разрывы строк.

Обновление:

Оказалось, что код JavaScript- на самом деле применяется для генерации зашифрованного зашифрованного текста, использует CTR -режим для шифрования (вместо CBC -режим). Следовательно, OpenSSL-оператор, который может использоваться для дешифрования размещенного зашифрованного текста:

openssl enc -aes-128-ctr -a -A -in Cipherbase64.txt -out PlainText.txt -K 31323334353637383930303030303030 -iv 31323334353637383930303030303030 -d

Расшифрованный текст:

{"sign":"13adab9285fe86206b73e029ff0d290fc0e31237","timestamp":1570608017,"logid":"MTU3MDYwODA2MjAzMjAuMTMzMjE0Nzc2OTIxNTgxNDY=","uk":3012946979,"shareid":547370362,"fid_list":"[\"482622974717034\"]","input":"aaxb","vcode":"33324238656332346361663334656637323237633636373637643239666664336662393132313032313738303030303030303030303030303031353730363038303530B0D6C0036A1909217D2CDCD5B76B46FB"}

, который можно легко проверить здесь .

...