AES 的 Javascript 实现与 PHP 的 mcrypt 兼容

Posted

技术标签:

【中文标题】AES 的 Javascript 实现与 PHP 的 mcrypt 兼容【英文标题】:Javascript implementation of AES compatible with PHP's mcrypt 【发布时间】:2011-10-15 15:52:11 【问题描述】:

问题

我需要在 javascript 中加密数据并在 php 中解密。 Mcrypt 似乎是 PHP 方面的方法,而 AES 似乎完全足够好,但我很难找到与之匹配的 javascript 解密算法。有什么建议?如果它有助于获得兼容的 js 加密/解密库,我愿意替换任何假设(mcrypt、aes、ECB 等)。

代码

PHP 看起来很像这样:

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encrypted = mcrypt_encrypt( MCRYPT_RIJNDAEL_256, $key, $plaintext,
        MCRYPT_MODE_ECB,$iv );

基本原理

这并不重要,但这里的重点是对外部系统的一些凭据进行加密,以便我们可以在我们的服务器周围传递它,而无需我们的分析和日志服务器清楚地拾取它。它最终会在发送到外部系统之前在 PHP 中被解密。

【问题讨论】:

同样的问题!!!我找到的所有当前库都使用密码,我需要一个使用密钥和 iv :( 我遇到了同样的问题。你有什么发现吗? 看看我的问题***.com/questions/18786025/… 【参考方案1】:

我最终使用了 SlowAES 库,它在 PHP 和 JS 中具有并行实现:

http://kevinkuchta.com/_site/2011/08/matching-php-and-js-encryption/

【讨论】:

以上是关于AES 的 Javascript 实现与 PHP 的 mcrypt 兼容的主要内容,如果未能解决你的问题,请参考以下文章

JS实现AES加密并与PHP互通的方法分析

javascript与php实现openssl加密/解密

javascript 与 PHP 通信加密,使用AES 128 CBC no padding,以及ios,java,c#文章例子

JavaScript前端的AES加密与解密实现

PHP如何实现AES加解密

JavaScript 和 PHP 中不同的 AES 加密