gpt4 book ai didi

javascript - CryptoJS 使用密码加密 AES 但 PHP 解密需要 key

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:26 25 4
gpt4 key购买 nike

我正在使用 CryptoJS加密字符串:

  function doHash(msg){
msg = String(msg);
var passphrase = 'aggourakia';
var hash = CryptoJS.AES.encrypt(msg, passphrase);
var ciphertext= hash.ciphertext.toString(); //return ciphertext instead of object
return ciphertext;
}

据我了解,CryptoJS 使用密码生成 key ,然后使用该 key 加密数据。

However I'd like to decrypt the cipher using a PHP function, or maybe an online tool such as this: http://aesencryption.net/

问题是这些需要 key 不是密码。

我如何直接向 CryptoJS AES 提供 key ,我可以在服务器端或任何在线工具上使用它来解密?

问题是,我已经很难找到用于解密 AES 密码的 PHP 函数,而这个密码短语/ key 又增加了复杂性

最佳答案

如果您想直接提供key,您也应该提供IV。需要 IV(初始化向量),以便它可以与消息的第一个 block 进行异或运算。然后第一个 block 的密文与消息的第二个 block 进行异或运算,依此类推。这叫做 cipher-block chaining (CBC) .

var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f');
var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f');

var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });

这是来自 CryptoJS 文档 https://code.google.com/p/crypto-js/#Custom_Key_and_IV

您可以使用 PBKDF2 生成 key 和 IV,就像@Narf 写的那样。 https://code.google.com/p/crypto-js/#PBKDF2

关于 PHP:mcrypt具有 AES 128 的 MCRYPT_RIJNDAEL_128 密码。MCRYPT_RIJNDAEL_192 和 MCRYPT_RIJNDAEL_256 与 AES 192 和 AES 256 不兼容,因为 AES 使用具有所有 key 大小的 128 位 block 。 Rijndael 的 block 大小是可配置的。如果您提供 128 位 key ,CryptoJS 将使用 128 位 AES,如果您使用接受密码的函数,它将使用 256 位。

关于javascript - CryptoJS 使用密码加密 AES 但 PHP 解密需要 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26486152/

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