在PHP中加密并在JS中解密 - AES256

时间:2015-11-03 14:02:56

标签: javascript php encryption cryptography cryptojs

该功能将接收上传的文件,并将加密此文件以保存在服务器中,我考虑使用openssl_encrypt。

加密类型为AES256。

在请求Web服务之后,将返回一个base 64加密文档,使用crypto-js在JS端解密。

要知道,我的问题是如何使用openssl_encrypt php函数进行加密过程?

加密过程:

  1. 的fopen
  2. 加密
  3. 编码base64
  4. fwrite的
  5. FCLOSE
  6. 解密过程:

    1. Decode base 64
    2. 解密
    3. 打开pdf文档
    4. 上面的过程,是我想到的想法,如果我错了或有错误,请纠正我。

      阶段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无法打开文件" ..

      为什么我会这样做?

1 个答案:

答案 0 :(得分:0)

加密/解密工作!

PHP SIDE TO ENCRYPT

$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)));