Javascript 使用CryptoJS的Aes加密

Javascript 使用CryptoJS的Aes加密,javascript,encryption,Javascript,Encryption,我正试图用以下代码用aes加密数据 var CryptoJS = require("crypto-js"); var key = '956479999968698999415547894568134'; var salt = '36521412345678'; var key = CryptoJS.PBKDF2(key, salt, { keySize: 256 / 32, iterations: 1000 }); var iv = CryptoJS.lib.WordArray.random

我正试图用以下代码用aes加密数据

var CryptoJS = require("crypto-js");

var key = '956479999968698999415547894568134';

var salt = '36521412345678';
var key = CryptoJS.PBKDF2(key, salt, { keySize: 256 / 32, iterations: 1000 });
var iv = CryptoJS.lib.WordArray.random(256 / 8);
var cprEncrypt = CryptoJS.AES.encrypt("1234", key, { 'iv': iv });

console.log(cprEncrypt.toString());
我的代码工作得很好,但与.net加密值不同。 我认为iv不一样。我在.net中获得静脉注射,如下所示:

// generate the key from the shared secret and the salt

Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedSecret, _salt);

// Create a RijndaelManaged object
// with the specified key and IV.
aesAlg = new RijndaelManaged();
aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);
aesAlg.IV = key.GetBytes(aesAlg.BlockSize / 8);

我怎样才能解决这个问题?如何在.net和js中获得相同的值?

在java脚本中生成一个随机IV。您需要将此IV与加密数据一起保存。通常,IV只是放在加密数据的前面,所以在需要时就可以使用它。保持清楚,这不是秘密

在.net中您改为从密钥的内容设置它,该密钥不起作用,因为它需要与加密时使用的密钥相同。另外,将密钥用作IV也是一种不好的做法,因为在某些情况下,它可用于破坏加密