【发布时间】:2016-02-03 17:17:35
【问题描述】:
该函数将接收上传的文件,并将该文件加密保存在服务器中,我正在考虑使用openssl_encrypt。
加密类型将为 AES256。
当请求 Web 服务后,将返回一个 base 64 加密文档,以便在 JS 端使用 crypto-js 解密。
要知道,我的问题是如何使用 openssl_encrypt php 函数进行加密过程?
加密过程:
- 打开
- 加密
- 编码base64
- 写入
- 关闭
解密过程:
- 解码基数 64
- 解密
- 打开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