在PHP中进行AES加密,然后用Javascript解密(cryptojs)

Lyu*_*nov 5 javascript php encryption mcrypt cryptojs

我正在寻找一种方法来对简单文本(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);
Run Code Online (Sandbox Code Playgroud)

然后这是我正在使用的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) );
Run Code Online (Sandbox Code Playgroud)

因为我只是测试,我将来自php的输出直接复制/粘贴到JS中,看看它是否会返回任何结果,但这并不会发生.由于我是加密/解密部分的新手,我可能会遗漏一些东西.任何建议将不胜感激.

在旁注中,我在这里阅读了很多关于使用其他类型的通信来传输数据的建议,在这种情况下这是不可能的,因为我需要将此字符串传递给第三方软件,这将带来它在一个安全的区域,我可以访问只编辑javascript,这就是为什么我试图加密php中的文本并将其放在网站的源代码中,第三方软件将从中读取它,因为它是加密的并将它转移到安全部分,我将需要通过Javascript解密它(我没有访问PHP那里).

Lyu*_*nov 5

所以,经过一些挖掘,我来到了下面的在线加密器/解密器,这导致我在GitHub存储库中的乱码.

在第一个链接的评论中,我发现这个JS库有一个PHP等价物,它看起来运行得相当好并且相当容易部署:https: //github.com/ivantcholakov/gibberish-aes-php

所以感谢Lars提供的答案,我会鼓励他打开存储库,我相信他会让某人的生活更轻松一点:)


Lar*_*ehm 0

前段时间我也遇到了同样的问题。我终于使用http://code.google.com/p/slowaes/中的 SlowAES进行了一些修复,并将其移植到 PHP。

注意:官方源代码已损坏,就像官方 PHP 端口一样。

如果您有兴趣,请告诉我。然后我会在 GitHub 上打开一个新的存储库,您可以在其中获取所需的一切...