Encryption 为什么AesManaged.FeedbackSize=128时AesManaged.FeedbackSizeValue=8

Encryption 为什么AesManaged.FeedbackSize=128时AesManaged.FeedbackSizeValue=8,encryption,aes,rijndaelmanaged,.net-4.7,Encryption,Aes,Rijndaelmanaged,.net 4.7,我希望显式地设置加密参数(从.NET4.7默认值中读取),以避免以后框架版本实现不同默认值时出现解密困难 为什么手动设置反馈大小后,反馈大小值不变 AesManaged aes = new AesManaged(); aes.Mode = CipherMode.CBC; aes.KeySize = 256; aes.Padding = PaddingMode.PKCS7; aes.BlockSize = 128; aes.FeedbackSize = aes.BlockSize; 这是aes对

我希望显式地设置加密参数(从.NET4.7默认值中读取),以避免以后框架版本实现不同默认值时出现解密困难

为什么手动设置反馈大小后,反馈大小值不变

AesManaged aes = new AesManaged();
aes.Mode = CipherMode.CBC;
aes.KeySize = 256;
aes.Padding = PaddingMode.PKCS7;
aes.BlockSize = 128;
aes.FeedbackSize = aes.BlockSize;
这是aes对象,请参见反馈值8

-       aes {System.Security.Cryptography.AesManaged}   System.Security.Cryptography.AesManaged

-       aes {System.Security.Cryptography.AesManaged}   System.Security.Cryptography.AesManaged
        BlockSize   128 int
        BlockSizeValue  128 int
        FeedbackSize    128 int
        FeedbackSizeValue   8   int
+       IV  {byte[16]}  byte[]
        IVValue null    byte[]
+       Key {byte[32]}  byte[]
        KeySize 256 int
        KeySizeValue    256 int
        KeyValue    null    byte[]
+       LegalBlockSizes {System.Security.Cryptography.KeySizes[1]}  System.Security.Cryptography.KeySizes[]
+       LegalBlockSizesValue    {System.Security.Cryptography.KeySizes[1]}  System.Security.Cryptography.KeySizes[]
+       LegalKeySizes   {System.Security.Cryptography.KeySizes[1]}  System.Security.Cryptography.KeySizes[]
+       LegalKeySizesValue  {System.Security.Cryptography.KeySizes[1]}  System.Security.Cryptography.KeySizes[]
        Mode    CBC System.Security.Cryptography.CipherMode
        ModeValue   CBC System.Security.Cryptography.CipherMode
        Padding PKCS7   System.Security.Cryptography.PaddingMode
        PaddingValue    PKCS7   System.Security.Cryptography.PaddingMode
+       m_rijndael  {System.Security.Cryptography.RijndaelManaged}  System.Security.Cryptography.RijndaelManaged
+       Static members      

CBC模式没有反馈大小。见:

维基百科图片

此外,无需指定块大小(
aes.BlockSize=128;
),aes只有一个块大小。Rijndael确实支持多种块大小,因此有必要将128位的块大小指定为AES。虽然许多Rijndael实现默认为128位的块大小,但最好完全指定参数