gpt4 book ai didi

javascript - 使用 PHP mcrypt 加密后使用 Javascript CryptoJS 解密 AES

转载 作者:行者123 更新时间:2023-11-29 16:11:25 24 4
gpt4 key购买 nike

使用 mcrypt 在 PHP 中加密

<?php
$string = 'Secret Message';
$key = 'd4b494e4502a62edd695a903a94c2701';
$iv = '02f30dffbb0d084755f438f7d8be4a7d';

$encrypted = base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$key,
$string,
MCRYPT_MODE_CBC,
$iv
)
);
//$encrypted results in 'nYoFAiyDARVSI09lH/IPdim5TvE51izVjk6sc2AK9Rg='
?>

使用 CryptoJS 在 Javascript 中解密

<script>
var encrypted = 'nYoFAiyDARVSI09lH/IPdim5TvE51izVjk6sc2AK9Rg=';
var key = CryptoJS.enc.Hex.parse('d4b494e4502a62edd695a903a94c2701');
var iv = CryptoJS.enc.Hex.parse('02f30dffbb0d084755f438f7d8be4a7d');

var decrypted = CryptoJS.AES.decrypt(encrypted,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});

console.log(decrypted.toString(CryptoJS.enc.Utf8)); //prints an empty string
</script>

想不通怎么让Javascript端吐出原文

最佳答案

已解决

注意:我发现 PHP 的 mcrypt 中的“MCRYPT_RIJNDAEL_256”不包含在 AES 中。它使用 Rijndael 方法,但 block 大小为 256 位(不包括在 AES 中)。因此,CryptoJS 不处理 Rijndael 的 256 位 block 大小。谢谢,GregS

尽管如此,我发现一个实现成功解密了我通过运行上面的 PHP mcrypt 函数获得的密文,使用 MCRYPT_RIJNDAEL_256(Rijndael,256 位 block 大小,256 位 key /32-字节 key )。

这是: https://code.google.com/p/js-mcrypt/

<script>
var encrypted = 'nYoFAiyDARVSI09lH/IPdim5TvE51izVjk6sc2AK9Rg=';
var key = 'd4b494e4502a62edd695a903a94c2701';
var iv = '02f30dffbb0d084755f438f7d8be4a7d';
var decrypted = mcrypt.Decrypt(atob(encrypted), iv, key, 'rijndael-256', 'cbc');
</script>

我希望这对某人有所帮助,因为我花了一周的业余时间试图解决这个问题并几乎放弃。

关于javascript - 使用 PHP mcrypt 加密后使用 Javascript CryptoJS 解密 AES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26623768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com