Admin Core

加密帮助类

命名空间:ZhonTai.Common.Helpers

命名空间:ZhonTai.Common.Helpers

提供多种加密算法的帮助类,涵盖 MD5、DES 以及国密 SM2/SM3/SM4 算法。


MD5 加密

类名:MD5Encrypt

应用场景

  • 密码哈希存储
  • 文件完整性校验
  • 数据指纹生成

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using ZhonTai.Common.Helpers;

// 16位MD5
var hash16 = MD5Encrypt.Encrypt16("hello");

// 32位MD5(默认大写)
var hash32 = MD5Encrypt.Encrypt32("hello");

// 32位MD5(小写)
var hash32Lower = MD5Encrypt.Encrypt32("hello", lowerCase: true);

// 64位MD5(Base64格式)
var hash64 = MD5Encrypt.Encrypt64("hello");

// 计算文件流的MD5
using var stream = File.OpenRead("test.txt");
var fileHash = MD5Encrypt.GetHash(stream);

DES 加解密

类名:DesEncrypt

采用 ECB 模式 + PKCS7 填充

应用场景

  • 敏感配置信息加解密
  • 数据传输加密(非高安全场景)

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using ZhonTai.Common.Helpers;

var key = "mysecretkey"; // 密钥长度需 >= 8位

// Base64 格式加解密
var encrypted = DesEncrypt.Encrypt("hello", key);
var decrypted = DesEncrypt.Decrypt(encrypted, key);

// 16进制格式加解密
var encryptedHex = DesEncrypt.Encrypt4Hex("hello", key);
var decryptedHex = DesEncrypt.Decrypt4Hex(encryptedHex, key);

// 使用默认密钥(不推荐生产使用)
var encrypted2 = DesEncrypt.Encrypt("hello");

注意:DES 算法安全性较低,建议仅用于非敏感场景。高安全场景请使用 SM4。


国密 SM2 非对称加密

类名:SM2Encryption,基于 BouncyCastle

应用场景

  • 数字签名与验签
  • 密钥交换
  • 敏感数据加密传输

使用示例

1
2
3
4
5
6
7
8
9
10
using ZhonTai.Common.Helpers;

// 生成SM2密钥对
SM2Encryption.GenerateSM2KeyPair(out string privateKey, out string publicKey);

// 公钥加密
var encrypted = SM2Encryption.Encrypt("敏感数据", publicKey);

// 私钥解密
var decrypted = SM2Encryption.Decrypt(encrypted, privateKey);

国密 SM3 哈希算法

类名:SM3Encryption,基于 BouncyCastle

应用场景

  • 密码哈希存储
  • 数据完整性校验
  • 数字签名

使用示例

1
2
3
4
5
6
7
8
9
10
using ZhonTai.Common.Helpers;

// SM3 哈希
var hash = SM3Encryption.ComputeSM3Hash("hello"); // byte[]
var hashHex = SM3Encryption.ComputeSM3HashHex("hello"); // 16进制字符串
var hashBase64 = SM3Encryption.ComputeSM3HashBase64("hello"); // Base64字符串

// HMAC-SM3(带密钥的哈希)
var hmac = SM3Encryption.ComputeHMACSM3Hex("hello", "secretKey");
var hmacBase64 = SM3Encryption.ComputeHMACSM3Base64("hello", "secretKey");

国密 SM4 对称加密

类名:SM4Encryption,支持 ECBCBC 模式,基于 BouncyCastle

应用场景

  • 数据库敏感字段加密
  • 接口数据加密传输
  • 配置文件敏感信息加密

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using ZhonTai.Common.Helpers;

var key = "1234567890abcdef"; // 16字节密钥

// ECB 模式
var encrypted = SM4Encryption.Encrypt("hello", key, iv: null, mode: "ECB");
var decrypted = SM4Encryption.Decrypt(encrypted, key, iv: null, mode: "ECB");

// CBC 模式
var iv = "1234567890abcdef"; // 16字节IV
var encryptedCbc = SM4Encryption.Encrypt("hello", key, iv, mode: "CBC");
var decryptedCbc = SM4Encryption.Decrypt(encryptedCbc, key, iv, mode: "CBC");

// 使用16进制格式
var encryptedHex = SM4Encryption.Encrypt("hello", key, iv: null, mode: "ECB", isHex: true);
var decryptedHex = SM4Encryption.Decrypt(encryptedHex, key, iv: null, mode: "ECB", isHex: true);

// 使用 byte[] 密钥(更安全)
var keyBytes = System.Text.Encoding.UTF8.GetBytes("1234567890abcdef");
var encrypted2 = SM4Encryption.Encrypt("hello", keyBytes, iv: null);

输出格式

参数 说明
isHex: false(默认) 输出 Base64 格式密文
isHex: true 输出 16 进制格式密文

#中台 #中台/公共帮助类 #加密 #加密/哈希算法 #加密/对称加密