DotNet中的加密
.NET中的加密
System.Security.Cryptography命名空间提供加密服务,包括数据的安全编码和解码、哈希、随机数生成以及消息身份验证。
.NET Framework 提供多种标准密码算法的实现。因为具有良好定义的继承层次结构,所以可轻松扩展对这些算法,该层次结构包含定义基本算法类型(对称、不对称以及哈希算法)的抽象类和算法类。
表 1:显示 .NET Framework 为之提供实现“现成”类的算法。 | ||
对称算法 | 不对称算法 | 哈希算法 |
DES(数据加密标准) |
DSA(数据签名算法) |
HMAC SHA1(使用 SHA1 哈希算法且基于哈希的消息身份验证代码) |
TripleDES(三重数据加密标准) |
RSA |
MAC Triple DES(使用 Triple DES 消息身份验证代码) |
Rijndael |
MD5 |
|
RC2 |
SHA1, SHA256, SHA384, SHA512 |
对称算法支持
.NET 提供以下实现类,这些类提供对称、机密密钥加密算法:
• |
DESCryptoServiceProvider |
• |
RC2CryptoServiceProvider |
• |
RijndaelManaged |
• |
TripleDESCryptoServiceProvider |
注 以“CryptoServiceProvider”结尾的类是包装类,它们使用加密服务提供程序 (CSP) 的基本服务;以“Managed”结尾的类在托管代码中实现。
图 2 显示采用继承层次结构的 .NET Framework。算法类型基类(如 SymmetricAlgorithm)是抽象类。一套抽象的算法类派生自抽象类型基类。算法实现类提供了选定算法的具体实现,例如,DES、Triple-DES、Rijndael 和 RC2。
图 2. 对称加密类继承层次结构
不对称算法支持
.NET 通过抽象基类 (System.Security.Crytography.AsymmetricAlgorithm) 提供以下不对称(公共/专用密钥)加密算法:
• |
DSACryptoServiceProvider |
• |
RSACryptoServiceProvider |
这些算法用于数字签名和加密数据。图 3 显示继承层次结构。
图 3. 不对称加密类继承层次结构
哈希算法支持
.NET 提供以下哈希算法:
• |
SHA1, SHA256, SHA384, SHA512 MD5 |
• |
HMACSHA (Keyed Hashed algorithm) |
• |
MACTripleDES(加密的哈希算法) |
图 4 显示哈希算法类的继承结构层次。
图 4. 哈希加密类继承结构层次