这是我的阅读我不知道,如果AES是一个单一的,标准化的算法,可以用不同长度的密钥,或一个家庭的类似算法的工作?如果我发现任何2 AES的实现采取128位密钥,我应该有信心,他们将工作等同我的意思是(除非错误)?
From my reading I am not sure if AES is a single, standardized algorithm that can work with different length keys, or a family of similar algorithms? What I mean is if I find any 2 AES implementations taking a 128-bit key, should I be confident they will work identically (barring bugs)?
具体在.net / C#,我很困惑,为什么有抽象基类的两个实施 System.Security.Cryptography.Aes
:系统.Security.Cryptography.AesCryptoServiceProvider
&放大器; System.Security.Cryptography.AesManaged
。
Specifically in .Net/C#, I was confused why there are two implementations of abstract base class System.Security.Cryptography.Aes
: System.Security.Cryptography.AesCryptoServiceProvider
& System.Security.Cryptography.AesManaged
.
然后似乎有AES和Rijndael算法区分/重叠,.NET拥有的Rijndael
和 RijndaelManaged的
类,以及 RijndaelManagedTransform
Then there seems to be distinction/overlap between AES and Rijndael, .NET has Rijndael
and RijndaelManaged
classes, as well as RijndaelManagedTransform
什么是所有这些之间的区别?我注意到,AES类似乎因为.NET 3.5,只存在而Rijndael算法自1.0以来各地
What's the differences between all of these? I notice AES classes seem to only exist since .NET 3.5 whereas Rijndael has been around since 1.0
很抱歉,如果这是愚蠢的问题,我是新来的密码不是安全散列函数等。
Sorry if these are dumb questions, I'm new to crypto other than secure hashing functions.
AES,高级加密标准,定义的 FIPS PUB 197 的3对称块密码AES-128,AES-192和AES-256。所有这三种算法是由特定的参数选择的Rijndael算法定义的。
AES, the Advanced Encryption Standard, defines in FIPS PUB 197 three symmetric block-ciphers: AES-128, AES-192 and AES-256. All three algorithms are defined by specific parameter-choices for the Rijndael algorithm.
的AES-128加密是一个功能(键,数据) - >(加密)。 Rijndael算法,加密功能(键,数据块大小,按键大小) - >(加密)
AES-128-encryption is a function (key, data) -> (encryption). Rijndael-encryption is a function (key, data, block-size, key-size) -> (encryption).
AesCryptoServiceProvider
使用底层的Windows的CryptoAPI进行加密。
AesManaged
执行纯管理code加密。 RijndaelManaged的
支持全系列参数的选择(也纯管理code)。
AesCryptoServiceProvider
uses the underlying Windows CryptoAPI to perform the encryption.
AesManaged
performs the encryption in pure managed code. RijndaelManaged
supports the full range of parameter-choices (also in pure managed code).
的优势,使用 AesCryptoServiceProvider
包括潜在的更高的速度和事实的CryptoAPI是通过FIPS认证(在Windows的某些版本)。
Advantages to using AesCryptoServiceProvider
include potential for higher speed and the fact that CryptoAPI is FIPS certified (on certain versions of Windows).
优点为 AesManaged
包括便携性( AesCryptoServiceProvider 不支持所有版本的Windows)。
Advantages to AesManaged
include portability (AesCryptoServiceProvider
is not supported on all versions of Windows).
唯一的优势 RijndaelManaged的
是它支持在.NET框架的早期版本 - 我还没有见过任何人因使用非AES参数的选择
The only advantage to RijndaelManaged
is that it is supported in early versions of the .NET framework - I haven't ever seen anyone use the non-AES parameter-choices.