Mr.*_*Boy 18 .net c# security cryptography
从我的阅读中我不确定AES是否是一种可以使用不同长度密钥或一系列类似算法的单一标准化算法?我的意思是,如果我发现任何2个AES实现采用128位密钥,我是否应该相信它们将以相同的方式工作(除了错误)?
特别是在.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开始就存在
对不起,如果这些都是愚蠢的问题,除了安全的散列函数之外,我是加密的新手.
Ras*_*ber 27
AES,高级加密标准,在FIPS PUB 197中定义了三种对称分组密码:AES-128,AES-192和AES-256.所有三种算法都由Rijndael算法的特定参数选择定义.
AES-128加密是一种功能(密钥,数据) - >(加密).Rijndael加密是一种功能(密钥,数据,块大小,密钥大小) - >(加密).
AesCryptoServiceProvider使用基础Windows CryptoAPI执行加密.
AesManaged在纯托管代码中执行加密.RijndaelManaged支持所有参数选择(也在纯托管代码中).
使用的优点AesCryptoServiceProvider包括具有更高速度的潜力以及CryptoAPI已通过FIPS认证(在某些版本的Windows上).
AesManaged包括可移植性的优点(AesCryptoServiceProvider并非所有版本的Windows都支持).
唯一的优点RijndaelManaged是它在早期版本的.NET框架中得到支持 - 我从未见过有人使用非AES参数选择.