Функция получит загруженный файл и зашифрует этот файл для сохранения на сервере, я думаю об использовании openssl_encrypt.
Тип шифрования будет AES256.
После того, как веб-служба запросит, вернет зашифрованный документ на основе 64 для дешифрования на стороне JS с использованием crypto-js.
Знаешь, мой вопрос, как я могу сделать процесс шифрования с помощью функции php openssl_encrypt?
Процесс шифрования:
Процесс расшифровки:
Процессы выше, это идея, которую я имею в виду, пожалуйста, поправьте меня, если я ошибаюсь или есть ошибка.
Фаза 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 не может открыть файл» ..
Почему я это получаю?
Шифрование / дешифрование работает!
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)));
Других решений пока нет …