[英]Issue with AES 256-Bit Encryption Key Size in C#
I am trying to perform AES 256-bit CBC encryption in C#.我正在尝试在 C# 中执行 AES 256 位 CBC 加密。 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
我正在使用此页面中的示例密钥/iv 字符串: http : //pic.dhe.ibm.com/infocenter/initiate/v9r5/topic/com.ibm.einstall.doc/topics/t_einstall_GenerateAESkey.html
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.
尝试设置 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.
我可以在 node.js 项目中使用这个 key/iv 组合,但我试图将它移植到 C# 无济于事。 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 个十六进制值,但您需要这样做:
byte[] key = new byte[] { 0xB3, 0x74, 0xA2, 0x6A, 0x71, 0x49, 0x04 etc. };
AES provides below bits based on secret key size. AES 根据密钥大小提供以下位。
16 length key size then AES-128 bit will be applicable. 16 个长度的密钥大小,那么 AES-128 位将适用。 24 length key size then AES-192 bit will be applicable.
24 个长度的密钥大小,那么 AES-192 位将适用。 32 length key size then AES-256 will be applicable.
32 长度的密钥大小,则 AES-256 将适用。
Key sizes: 128, 192 or 256 bits Rounds: 10, 12 or 14 (depending on key size)密钥大小:128、192 或 256 位轮次:10、12 或 14(取决于密钥大小)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.