【问题标题】:Encrypt in PHP and decrypt in JS - AES256在 PHP 中加密并在 JS 中解密 - AES256
【发布时间】:2016-02-03 17:17:35
【问题描述】:

该函数将接收上传的文件,并将该文件加密保存在服务器中,我正在考虑使用openssl_encrypt。

加密类型将为 AES256。

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

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

加密过程:

  1. 打开
  2. 加密
  3. 编码base64
  4. 写入
  5. 关闭

解密过程:

  1. 解码基数 64
  2. 解密
  3. 打开pdf文档

以上流程,是我的想法,如有错误或有错误请指正。

第一阶段:

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 无法打开文件”..

为什么我会得到这个?

【问题讨论】:

  • 好吧,这个问题已经被否决了,但是没有人说为什么!这很奇怪!
  • 它可能被否决了,因为您没有展示任何您尝试过的东西。到目前为止,您已经做了一些研究(这很清楚),但您还没有真正尝试过。先尝试,然后在遇到具体问题时提出问题。
  • 我的问题是,是否可以使用 openssl 函数进行 AES256 加密并使用 cryptojs 解密?
  • 如果它们都支持 AES256,那么是的,这是可能的(尽管也存在选择合适的密码和共享密钥等差异)。实际上,您可能会通过在 javascript 中与用户共享解密文件的密钥来使系统不安全,但我不知道您的用例。
  • 是的,您可以在一个中加密并在另一个中解密,正如 list 所见。请记住,您需要启用 TLS 才能确保远程安全:Javascript Cryptography Considered Harmful

标签: javascript php encryption cryptography cryptojs


【解决方案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);`

要解密的 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)));

【讨论】:

  • 好吧!我为我所要求的问题添加了解决方案,但我的问题被否决了!!难以置信这里怎么有人只是投票,甚至不检查整个帖子!
  • 这不是很直观。您在 JavaScript 中使用的“data”、“key”和“iv”变量是什么?请解释一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2011-07-19
  • 2019-11-29
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多