通过我的阅读,我不确定 AES 是一种可以使用不同长度的密钥工作的单一标准算法,还是一组相似算法?我的意思是,如果我找到任何两个接受 128 位密钥的 AES 实现,我是否能确信它们将完全相同(除了错误)?
特别是在 .NET/C# 中,我对抽象基类 System.Security.Cryptography.Aes
的两个实现感到困惑:System.Security.Cryptography.AesCryptoServiceProvider
和 System.Security.Cryptography.AesManaged
。
然后似乎有 AES 和 Rijndael 之间的区别/重叠,.NET 有 Rijndael
和 RijndaelManaged
类,以及 RijndaelManagedTransform
。
这些之间有什么区别?我注意到 AES 类似乎只存在于 .NET 3.5 以后,而 Rijndael 从 1.0 就已经存在了。
如果这些问题很愚蠢,请原谅,除了安全哈希函数之外,我对加密领域很陌生。