AES加密和C#AES

2023-09-03 12:13:24 作者:尽我所能给你想要的

这是我的阅读我不知道,如果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.

 
精彩推荐
图片推荐