C#中的AES 256位加密密钥大小问题
我正在尝试在C#中执行AES 256位CBC加密.我正在使用此页面上的示例密钥/iv字符串:
I am trying to perform AES 256-bit CBC encryption in C#. I am using the sample key/iv strings from this page: http://pic.dhe.ibm.com/infocenter/initiate/v9r5/topic/com.ibm.einstall.doc/topics/t_einstall_GenerateAESkey.html
但是,当我运行下面的函数时,我收到一条错误消息:指定的密钥对于该算法而言不是有效的大小."尝试设置cipher.Key时.我可以在node.js项目中使用此键/iv组合,但是我尝试将其移植到C#都无济于事.我在下面做什么错了?
However when I run the function below, I receive an error saying "Specified key is not a valid size for this algorithm." when attempting to set cipher.Key. I am able to use this key/iv combination in a node.js project, but I am attempting to port it to C# to no avail. What am I doing wrong below?
static void Main(string[] args)
{
string keyString = "B374A26A71490437AA024E4FADD5B497FDFF1A8EA6FF12F6FB65AF2720B59CCF";
string ivString = "7E892875A52C59A3B588306B13C31FBD";
byte[] key = Encoding.UTF8.GetBytes(keyString);
byte[] iv = Encoding.UTF8.GetBytes(ivString);
Console.WriteLine("Key is " + key.Length + " bytes.");
using (RijndaelManaged cipher = new RijndaelManaged())
{
cipher.Mode = CipherMode.CBC;
cipher.KeySize = 256;
cipher.BlockSize = 128;
cipher.Key = key;
cipher.IV = iv;
// Create a decrytor to perform the stream transform.
ICryptoTransform encryptor = cipher.CreateEncryptor(cipher.Key, cipher.IV);
}
Console.WriteLine("Success!");
Console.ReadKey();
}
该密钥字符串的长度为64个字符,为512位,而不是256位.看起来该字符串包含32个十六进制值,但是您需要这样做:
That key string is 64 characters long which is 512 bits, not 256. It looks like the string contains 32 hexadecimal values but then you need to do this instead:
byte[] key = new byte[] { 0xB3, 0x74, 0xA2, 0x6A, 0x71, 0x49, 0x04 etc. };