.net Core 3.0中的Aes加密'指定的密钥对此算法无效。'

时间:2019-05-24 14:26:02

标签: c# .net .net-core-3.0

使用.Net Core 3.0,我想使用任何密码长度作为加密密钥来加密一些文本:

using (Aes myAes = Aes.Create())
{
   var key = Encoding.UTF8.GetBytes("mysmallkey");
   myAes.Key = key; //ERROR
}

我得到一个错误:

System.Security.Cryptography.CryptographicException: 'Specified key is not a valid size for this algorithm.'

我在做什么错?谢谢。

1 个答案:

答案 0 :(得分:1)

您在这里做错了-var key = Encoding.UTF8.GetBytes("mysmallkey"); Refer Documentation here Aes Class      和AES Documentation

我建议您通过在AES类中使用LegalKeySizes property来检查密钥的有效大小。有效的密钥大小由特定的对称算法实现指定,并在LegalKeySizes属性中列出。

 public virtual KeySizes[] LegalKeySizes { get; }

您将获得以下输出

var key = Encoding.UTF8.GetBytes("mysmallkey");
  //myAes.Key = Key; //ERROR
   KeySizes[] ks = myAes.LegalKeySizes;
   foreach (KeySizes item in ks)
   {
    Console.WriteLine("Legal min key size = " + item.MinSize);
    Console.WriteLine("Legal max key size = " + item.MaxSize);
    //Output
    // Legal min key size = 128
    // Legal max key size = 256
   }

如果您使用的是128 bit then Length of secret key should be 16 for 128 bits key size    试试这个

 var key = Encoding.UTF8.GetBytes("mysmallkey123456");
  

对于192位-密钥的长度对于192位应为24   大小示例键将如下所示

mysmallkey12345512987651 
  

对于256位-密钥的长度对于256位应为32   尺寸样本键

mysmallkey1234551298765134567890