System.Security.Cryptography 命名空间提供加密服务,包括安全的数据编码和解码,以及许多其他操作,例如散列法、随机数字生成和消息身份验证。有关更多信息,请参见 加密服务。 .NET Framework 提供许多标准加密算法的实现。这些算法易于使用并具有最安全的可能默认属性。此外,对象继承、流设计和配置的 .NET Framework 加密模型具有高度的可扩展性。 对象继承 .NET Framework 安全系统实现可扩展模式的派生类继承。层次结构如下所示: 算法类型类,如 SymmetricAlgorithm 或 HashAlgorithm.该级别为抽象。 从算法类型类继承的算法类,如 RC2 或 SHA1.该级别为抽象。 从算法类继承的算法类的实现,如 RC2CryptoServiceProvider 或 SHA1Managed.该级别是完全实现的。 使用这种模式的派生类,很容易添加新算法或现有算法的新实现。例如,若要创建新的公钥算法,应从 AsymmetricAlgorithm 类继承。若要创建特定算法的新实现,应创建该算法的非抽象派生类。 流设计公共语言运行库使用面向流的设计实现对称算法和哈希算法。该设计的核心是 CryptoStream 类,它派生自 Stream 类。基于流的加密对象全都支持用于处理对象的数据传输部分的单个标准接口 (CryptoStream)。由于所有对象都在标准接口上生成,所以可以将多个对象(如一个哈希对象后跟一个加密对象)链接在一起,并且可以对数据执行多个操作而不需要为数据提供任何中间存储。使用流模型时还可以用更小的对象生成对象。例如,可以将加密算法和哈希算法的组合视为单个流对象(即使该对象可能是从一组流对象生成的)。加密配置使用加密配置可以将算法的特定实现解析为算法名称,
,所以可以将多个对象(如一个哈希对象后跟一个加密对象)链接在一起,并且可以对数据执行多个操作而不需要为数据提供任何中间存储。使用流模型时还可以用更小的对象生成对象。例如,可以将加密算法和哈希算法的组合视为单个流对象(即使该对象可能是从一组流对象生成的)。加密配置使用加密配置可以将算法的特定实现解析为算法名称,
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace DataCrypto
{
/// <summary>
/// 哈希加密类
/// </summary>
public class HashMethod
{
private HashAlgorithm HashCryptoService;
/// <summary>
/// 哈希加密类的构造函数
/// </summary>
public HashMethod()
{
HashCryptoService = new SHA1Managed();
}
/// <summary>
/// 加密方法
/// </summary>
/// <param name="Source">待加密的串</param>
/// <returns>经过加密的串</returns>
public string Encrypto(string Source)
{
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
byte[] bytOut = HashCryptoService.ComputeHash(bytIn);
return Convert.ToBase64String(bytOut);
}
}
}