我正在寻找一种对简单文本(5 到 6 个数字和/或字符)进行双向加密的方法。问题是我想在 php 中进行加密,然后通过 Javascript 对其进行解密。对于 php,我已经使用 mcrypt_encode 进行了测试并使其正常工作,因此当我尝试使用 javascript 对其进行解密时(我使用的是 Crypto-js 库 - http://code.google.com/p/crypto-js/),我没有得到任何结果。这是我正在使用的 PHP 代码:
$key = "oijhd981727783hy18274";
$text = "1233";
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC,$iv);
echo base64_encode($crypttext);
然后这是我正在使用的 Javascript 代码:
var encrypted = CryptoJS.enc.Base64.parse("LiJU5oYHXRSNsrjMtCr5o2ev7yDFGZId85gh9MEXPeg=");
var key = 'oijhd981727783hy18274';
var decrypted = CryptoJS.AES.decrypt(encrypted, key);
document.write( decrypted.toString(CryptoJS.enc.Utf8) );
因为我只是在测试,所以我将 php 的输出直接复制/粘贴到 JS 中,看看它是否会返回任何结果,但是并没有发生。由于我是加密/解密部分的新手,我可能会遗漏一些东西。任何建议将不胜感激。
附带说明,因为我在这里阅读了很多关于使用其他类型的通信来传输数据的建议,在这种情况下这是不可能的,因为我需要将这个字符串传递给第三方软件,这将把它带到一个安全区域,在那里我只能编辑 javascript,这就是为什么我试图用 php 加密文本并将其放在网站的源代码中,第三方软件将从那里读取它它已加密并将其传输到安全部分,我需要在其中通过 Javascript 将其解密(我无法访问那里的 php)。
最佳答案
所以,经过更多的挖掘之后,我在网上找到了以下 encryptor/decryptor这让我找到了gibberish-aes at GitHub存储库。
在第一个链接的评论中,我发现这个 JS 库有一个 php 等价物,它似乎工作得相当好并且很容易部署: https://github.com/ivantcholakov/gibberish-aes-php
所以感谢 Lars 提供的答案,我鼓励他打开存储库,我相信他会让别人的生活更轻松 :)
关于php - 在 php 中进行 AES 加密,然后使用 Javascript (cryptojs) 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11797238/