簡體   English   中英

使用CryptoJS進行Aes加密

[英]Aes encryption with CryptoJS

我正在嘗試使用以下代碼通過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加密的值不同。 我認為四不一樣。 我在.net中獲得iv,如下所示:

// 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也是一種不好的做法 ,因為在某些情況下它可以用於破壞加密

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM