C# 实现 MD5, SHA1, SHA256, SHA512 加密算法

5星 · 超过95%的资源 需积分: 33 15 下载量 146 浏览量 更新于2024-09-13 收藏 7KB TXT 举报
本文档提供了一个C#代码示例,用于实现MD5、SHA1、SHA256和SHA512等常见的哈希加密算法。`HashEncrypt`类是核心,它允许用户根据需要选择是否返回哈希值为字符串或字节数组,以及是否区分大小写。 在C#编程语言中,加密哈希算法常用于数据安全性和完整性验证。MD5(Message-Digest Algorithm 5)、SHA1、SHA256和SHA512都是这样的算法,它们将任意长度的数据转换成固定长度的摘要(哈希值),具有单向性和抗碰撞的特性。MD5和SHA1相对较旧,而SHA256和SHA512提供了更高的安全性。 `HashEncrypt`类的构造函数接收两个布尔参数:`IsCaseSensitive`和`IsReturnNum`。`IsCaseSensitive`决定了输入字符串是否进行大小写转换,如果设置为`false`,则所有字符都将转换为大写,这在处理哈希时通常不重要,因为哈希函数通常是不区分大小写的。`IsReturnNum`决定哈希计算的结果是返回字符串形式还是字节数组形式。通常,哈希值是以16进制字符串的形式表示的,但也可以选择以字节的形式存储或传输。 以下是在`HashEncrypt`类中可能包含的关键方法: 1. `getstrIN(string strIN)`: 这个方法用于预处理输入字符串。如果输入为空,它会替换为`~NULL~`,并根据`IsCaseSensitive`的设置,将字符串转换为全大写或保持原样。 2. 对于每个哈希算法(MD5、SHA1、SHA256、SHA512),类可能包含类似的方法,如`GetMD5Hash()`、`GetSHA1Hash()`、`GetSHA256Hash()`和`GetSHA512Hash()`。这些方法会使用.NET Framework的`System.Security.Cryptography`命名空间中的相应类(如`MD5CryptoServiceProvider`、`SHA1Managed`、`SHA256Managed`和`SHA512Managed`)来计算哈希值。 3. 在计算哈希值后,根据`IsReturnNum`的值,这些方法可能会调用一个内部方法,如`BytesToHex()`,将字节数组转换为16进制字符串,以便返回一个可读的哈希值。 哈希加密在多种场景下都有应用,例如: - 用户密码存储:存储经过哈希处理的密码,而不是明文,可以增加安全性。 - 文件完整性校验:通过比较文件的哈希值,可以判断文件是否被篡改。 - 数字签名:在公钥加密体系中,哈希用于创建消息的数字签名,以验证发送者身份和消息的完整性和未被篡改。 请注意,由于MD5和SHA1的安全性已逐渐降低,现在更推荐使用SHA256或更强的SHA512算法,特别是在对安全性要求较高的场合。