我正在使用 javascript Fritz Schneider 的 Rijndael 参考实现。我想用 C# 解密结果。
Javascript Rijndael 函数中提供的输入变量是
function rijndaelEncrypt(plaintext, key, mode) {}
其中plaintext 是要加密的文本,key 是加密密钥,mode 选择ECB 或CBC。我们使用的模式是ECB。
现在,对于 Microsoft Rijndael 实现,我应该使用什么初始化向量来解密它?
作为记录,整个 javascript 加密是这样的。
function rijndaelEncrypt(plaintext, key, mode) {
var i, aBlock;
var bpb = blockSizeInBits / 8; // bytes per block
var ct; // ciphertext
if (!plaintext || !key)
return;
if (key.length*8 != keySizeInBits)
return;
if (mode == "CBC")
ct = getRandomBytes(bpb); // get IV
else {
mode = "ECB";
ct = new Array();
}
// convert plaintext to byte array and pad with zeros if necessary.
plaintext = formatPlaintext(plaintext);
var expandedKey = new keyExpansion(key);
for (var block=0; block<plaintext.length / bpb; block++) {
aBlock = plaintext.slice(block*bpb, (block+1)*bpb);
if (mode == "CBC")
for (var i=0; i<bpb; i++)
aBlock[i] ^= ct[block*bpb + i];
ct = ct.concat(AESencrypt(aBlock, expandedKey));
}
return ct;
}
谢谢。非常感谢帮助。