各位同学,手上有一段C#代码,希望转为NodeJS的。参考了
private static void Decode(string text)
{
MemoryStream memoryStream = new MemoryStream();
RijndaelManaged rijndaelManaged = new RijndaelManaged();
byte[] array = Convert.FromBase64String(text);
byte[] rgbKey = Convert.FromBase64String("RTgklqOuVBZ=");
byte[] rgbIV = Convert.FromBase64String("3FH9eyHK7mfgtwF81RIwgA==");
CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cryptoStream.Write(array, 0, array.Length);
cryptoStream.Close();
memoryStream.Close();
Console.WriteLine("解密后:");
Console.WriteLine(Encoding.UTF8.GetString(memoryStream.ToArray()));
Console.WriteLine();
}
我的代码如下:
var crypto = require('crypto');
var algorithm = 'aes-128-ecb';
var key = 'RTgklqOuVBZ=';
var iv = '3FH9eyHK7mfgtwF81RIwgA==';
var decipher = crypto.createDecipheriv(algorithm, key,iv);
var data = 'hidden the coded string '
decipher.update(data, 'base64', 'utf8');
var decoded = decipher.final('utf8');
console.log(decoded);
但是在crypto.createDecipheriv(algorithm, key,iv);时,报错,Invalid IV length 。 试了:var iv = new Buffer(‘3FH9eyHK7mfgtwF81RIwgA==’,‘base64’); 也还是报同样的错误,请教一下,是哪里没有设置对?