javascript — шифрование в PHP и дешифрование в JS — AES256

Функция получит загруженный файл и зашифрует этот файл для сохранения на сервере, я думаю об использовании openssl_encrypt.

Тип шифрования будет AES256.

После того, как веб-служба запросит, вернет зашифрованный документ на основе 64 для дешифрования на стороне JS с использованием crypto-js.

Знаешь, мой вопрос, как я могу сделать процесс шифрования с помощью функции php openssl_encrypt?

Процесс шифрования:

  1. Еореп
  2. шифровать
  3. кодировать base64
  4. FWRITE
  5. fclose

Процесс расшифровки:

  1. Декодирование базы 64
  2. расшифровывать
  3. Откройте документ PDF

Процессы выше, это идея, которую я имею в виду, пожалуйста, поправьте меня, если я ошибаюсь или есть ошибка.

Фаза 1:

PHP-код:

После обработки файла:

$encryptionMethod = "AES-256-CBC";
$secret = "1234567890@@@@@@@@@@123456789012";  //must be 32 char length
$iv = substr($secret, 0, 16);
$encryptedMessage = openssl_encrypt($textToEncrypt, $encryptionMethod, $secret,0,$iv);

На jquery для расшифровки не работает:

var ckey = "1234567890@@@@@@@@@@123456789012";
var decrypted = CryptoJS.AES.decrypt(data.content, ckey, { iv: "1234567890@@@@@@" });

PDF снова создается, но я не могу открыть, показывает сообщение об ошибке «Acrobat не может открыть файл» ..

Почему я это получаю?

-3

Решение

Шифрование / дешифрование работает!

PHP сторона шифрования

$encryptionMethod = "AES-256-CBC";
$secret = "1234567890@@@@@@@@@@123456789012";  //must be 32 char length
$iv = substr($secret, 0, 16);
$encryptedMessage = openssl_encrypt($textToEncrypt, $encryptionMethod, $secret,0,$iv);`

CRYPTOJS, чтобы расшифровать

var cipherParams = CryptoJS.lib.CipherParams.create({ciphertext: CryptoJS.enc.Hex.parse(data.toString())});
var decrypted = CryptoJS.AES.decrypt(cipherParams, CryptoJS.enc.Hex.parse(key), { iv: CryptoJS.enc.Hex.parse(iv) });
window.open("data:application/pdf;base64, " + btoa(decrypted.toString(CryptoJS.enc.Utf8)));
0

Другие решения

Других решений пока нет …