Encrypt.Library
2026.2.26.1
dotnet add package Encrypt.Library --version 2026.2.26.1
NuGet\Install-Package Encrypt.Library -Version 2026.2.26.1
<PackageReference Include="Encrypt.Library" Version="2026.2.26.1" />
<PackageVersion Include="Encrypt.Library" Version="2026.2.26.1" />
<PackageReference Include="Encrypt.Library" />
paket add Encrypt.Library --version 2026.2.26.1
#r "nuget: Encrypt.Library, 2026.2.26.1"
#:package Encrypt.Library@2026.2.26.1
#addin nuget:?package=Encrypt.Library&version=2026.2.26.1
#tool nuget:?package=Encrypt.Library&version=2026.2.26.1
简介
Encrypt.Library 是一个 NETCore 加密解密工具库,支持 AES、DES、RSA、MD5、SHA1、SHA256、SHA384、SHA512、SM3、SM2、SM4 等常用加密算法。
目录索引
快速开始
安装方式
Package Manager
Install-Package Encrypt.Library -Version 2.0.6.6
.NET CLI
dotnet add package Encrypt.Library -Version 2.0.6.6
PackageReference
<PackageReference Include="Encrypt.Library" Version="2.0.6.6" />
对称加密算法
AES
AES(Advanced Encryption Standard)高级加密标准,是一种对称加密算法,支持 ECB 和 CBC 两种模式。
生成 AES 密钥
// 生成 AES 密钥和 IV(密钥长度 256 位,IV 长度 128 位)
var aesKey = AESUtil.Key;
var key = aesKey.Key; // 加密密钥
var iv = aesKey.IV; // 初始化向量(CBC 模式必需)
AES 加密
ECB 模式(无需 IV)
// 注意:ECB 模式安全性较低,不推荐用于敏感数据
var srcString = "需要加密的字符串";
var encrypted = AESUtil.Encrypt(srcString, key);
CBC 模式(需要 IV)
// CBC 模式安全性更高,适用于大多数场景
var srcString = "需要加密的字符串";
var encrypted = AESUtil.Encrypt(srcString, key, iv);
// 字节数组加密(适用于二进制数据)
var srcBytes = Encoding.UTF8.GetBytes("需要加密的字符串");
var encryptedBytes = AESUtil.Encrypt(srcBytes, key, iv);
AES 解密
ECB 模式
var encryptedStr = "已加密的字符串";
var decrypted = AESUtil.Decrypt(encryptedStr, key);
CBC 模式
var encryptedStr = "已加密的字符串";
var decrypted = AESUtil.Decrypt(encryptedStr, key, iv);
// 字节数组解密
var encryptedBytes = /* 已加密的字节数组 */;
var decryptedBytes = AESUtil.Decrypt(encryptedBytes, key, iv);
DES
DES(Data Encryption Standard)数据加密标准,是一种对称加密算法,由于密钥长度较短(56 位),安全性相对较低,建议使用 3DES 或 AES 替代。
生成 DES 密钥
// DES 密钥长度为 64 位(8 字节)
var desKey = DESUtil.Key;
var key = desKey.Key;
生成 DES 初始化向量
// DES IV 长度为 64 位(8 字节),CBC 模式必需
var desIv = DESUtil.Iv;
DES 加密
ECB 模式(无需 IV)
var srcString = "需要加密的字符串";
var encrypted = DESUtil.Encrypt(srcString, key);
// 字节数组加密
var srcBytes = Encoding.UTF8.GetBytes("需要加密的字符串");
var encryptedBytes = DESUtil.Encrypt(srcBytes, key);
CBC 模式(需要 IV)
// 字节数组加密(推荐使用 CBC 模式以提高安全性)
var srcBytes = Encoding.UTF8.GetBytes("需要加密的字符串");
var encrypted = DESUtil.Encrypt(srcBytes, key, desIv);
DES 解密
ECB 模式
var encryptedStr = "已加密的字符串";
var decrypted = DESUtil.Decrypt(encryptedStr, key);
// 字节数组解密
var encryptedBytes = /* 已加密的字节数组 */;
var decryptedBytes = DESUtil.Decrypt(encryptedBytes, key);
CBC 模式
var encryptedBytes = /* 已加密的字节数组 */;
var decrypted = DESUtil.Decrypt(encryptedBytes, key, desIv);
SM4
SM4 是中国国家密码管理局发布的对称加密算法,是一种分组密码算法,分组长度为 128 位,密钥长度也为 128 位。其安全性与 AES 相当,已被纳入 ISO/IEC 国际标准。
生成 SM4 密钥
// SM4 密钥长度为 128 位(16 字节)
var sm4Key = SM4Util.Key;
var key = sm4Key.Key;
生成 SM4 初始化向量
// SM4 IV 长度为 128 位(16 字节),CBC 模式必需
var sm4Iv = SM4Util.Iv;
SM4 加密
ECB 模式(无需 IV)
var srcString = "需要加密的字符串";
var encrypted = SM4Util.Encrypt(key, srcString);
// 字节数组加密
var srcBytes = Encoding.UTF8.GetBytes("需要加密的字符串");
var encryptedBytes = SM4Util.Encrypt(key, srcBytes);
CBC 模式(需要 IV)
// 字节数组加密
var srcBytes = Encoding.UTF8.GetBytes("需要加密的字符串");
var encrypted = SM4Util.Encrypt(key, sm4Iv, srcBytes);
SM4 解密
ECB 模式
var encryptedStr = "已加密的字符串";
var decrypted = SM4Util.Decrypt(key, encryptedStr);
// 字节数组解密
var encryptedBytes = /* 已加密的字节数组 */;
var decryptedBytes = SM4Util.Decrypt(key, encryptedBytes);
CBC 模式
var encryptedBytes = /* 已加密的字节数组 */;
var decrypted = SM4Util.Decrypt(key, sm4Iv, encryptedBytes);
非对称加密算法
RSA
RSA 是一种非对称加密算法,基于大整数分解的数学难题。RSA 支持数据加密和数字签名,常用于密钥交换和身份认证。
生成 RSA 密钥对
// 生成 RSA 密钥对(默认 2048 位)
var rsaKey = RSAUtil.Key;
// 获取密钥组件
var publicKey = rsaKey.PublicKey; // 公钥
var privateKey = rsaKey.PrivateKey; // 私钥
var exponent = rsaKey.Exponent; // 指数
var modulus = rsaKey.Modulus; // 模数
RSA 签名与验签
var rawStr = "需要签名的原始字符串";
// 使用私钥签名
var signStr = RSAUtil.Sign(rawStr, privateKey);
// 使用公钥验签
var result = RSAUtil.Verify(rawStr, signStr, publicKey);
RSA 加密
var publicKey = rsaKey.PublicKey;
var srcString = "需要加密的字符串";
// 默认使用 OAEP 填充(推荐)
var encrypted = RSAUtil.Encrypt(publicKey, srcString);
// 如需兼容旧版 macOS/Linux 可使用 PKCS1 填充
// var encrypted = RSAUtil.Encrypt(publicKey, srcString, true);
RSA 解密
var privateKey = rsaKey.PrivateKey;
var encryptedStr = "已加密的字符串";
// 默认使用 OAEP 填充
var decrypted = RSAUtil.Decrypt(privateKey, encryptedStr);
// 兼容 PKCS1 填充
// var decrypted = RSAUtil.Decrypt(privateKey, encryptedStr, true);
RSA PEM 格式支持
// 生成 PEM 格式密钥
// PKCS1 格式(传统格式)
var pkcs1KeyTuple = RSAUtil.GetPKCS(true);
var publicPkcs1 = pkcs1KeyTuple.publicPkcs1;
var privatePkcs1 = pkcs1KeyTuple.privatePkcs1;
// PKCS8 格式(推荐格式)
var pkcs8KeyTuple = RSAUtil.GetPKCS(false);
publicPkcs1 = pkcs8KeyTuple.publicPkcs1;
privatePkcs1 = pkcs8KeyTuple.privatePkcs1;
// 使用 PEM 格式密钥进行加解密
var rawStr = "需要加密的字符串";
var encryptedStr = RSAUtil.EncryptWithPem(pemPublicKey, rawStr);
var decryptedStr = RSAUtil.DecryptWithPem(pemPrivateKey, encryptedStr);
哈希算法
MD5
MD5(Message-Digest Algorithm 5)是一种不可逆的哈希算法,产生 128 位(16 字节)的哈希值。由于存在碰撞风险,不推荐用于安全敏感场景,仅适用于数据完整性校验等场景。
var srcString = "需要计算哈希的字符串";
// 计算 MD5 哈希值(返回小写十六进制字符串)
var hashed = MD5Util.GetMD5Str(srcString);
// 另一种写法(功能相同)
var hashed2 = MD5Util.GetMd5Str(srcString);
SHA
SHA(Secure Hash Algorithm)安全哈希算法家族,包括 SHA1、SHA256、SHA384、SHA512 等变体。SHA1 由于存在安全漏洞,已不推荐使用;SHA256 及以上版本仍被广泛使用。
SHA1
var srcString = "需要计算哈希的字符串";
var hashed = SHAUtil.GetSHA1(srcString);
SHA256
var srcString = "需要计算哈希的字符串";
var hashed = SHAUtil.GetSHA256(srcString);
SHA384
var srcString = "需要计算哈希的字符串";
var hashed = SHAUtil.GetSHA384(srcString);
SHA512
var srcString = "需要计算哈希的字符串";
var hashed = SHAUtil.GetSHA512(srcString);
HMAC
HMAC(Hash-based Message Authentication Code)基于哈希的消息认证码,通过结合密钥和哈希算法提供消息完整性和认证功能。
HMAC-MD5
var key = "密钥";
var srcString = "需要计算 HMAC 的字符串";
var hashed = MD5Util.GetHMACMD5(srcString, key);
HMAC-SHA1
var key = "密钥";
var srcString = "需要计算 HMAC 的字符串";
var hashed = SHAUtil.GetSHA1(srcString, key);
HMAC-SHA256
var key = "密钥";
var srcString = "需要计算 HMAC 的字符串";
var hashed = SHAUtil.GetSHA256(srcString, key);
HMAC-SHA384
var key = "密钥";
var srcString = "需要计算 HMAC 的字符串";
var hashed = SHAUtil.GetSHA384(srcString, key);
HMAC-SHA512
var key = "密钥";
var srcString = "需要计算 HMAC 的字符串";
var hashed = SHAUtil.GetSHA512(srcString, key);
国密算法
国密算法是中国国家密码管理局发布的密码算法标准,包括 SM1、SM2、SM3、SM4 等。其中 SM1 和 SM4 为对称加密算法,SM2 为非对称加密算法,SM3 为哈希算法。
SM3
SM3 是一种国密哈希算法,产生 256 位(32 字节)的哈希值。安全性与 SHA256 相当,已被纳入 ISO/IEC 国际标准。
// 计算 SM3 哈希值(返回字节数组)
byte[] hashBytes = SM3Util.ToSM3byte("需要计算 SM3 哈希的字符串");
// 如需返回十六进制字符串
// string hashString = SM3Util.ToSM3HexStr("需要计算 SM3 哈希的字符串");
SM2
SM2 是一种国密非对称加密算法,基于椭圆曲线密码学(ECC)。SM2 算法相较于 RSA 具有更短的密钥长度和更高的安全强度,已被纳入 ISO/IEC 国际标准。
生成 SM2 密钥对
byte[] pubKey, privKey;
SM2Util.GenerateKey(out pubKey, out privKey);
SM2 加密
// SM2 加密模式:C1C2C3(C++ 实现常用)或 C1C3C2(Java 实现常用)
var mode = Mode.C1C2C3;
// 待加密的字节数组
var plainBytes = Encoding.UTF8.GetBytes("需要加密的字符串");
// 加密
var encryptedBytes = SM2Util.Encrypt(pubKey, privKey, mode, plainBytes);
SM2 解密
// 使用之前加密的模式进行解密
var decryptedBytes = SM2Util.Decrypt(pubKey, privKey, mode, encryptedBytes);
var decryptedString = Encoding.UTF8.GetString(decryptedBytes);
微信/企业微信消息加解密
本库提供了微信/企业微信消息的加解密功能,包括消息签名验证和消息体加解密。
微信消息签名验证
微信服务器会发送 signature 参数用于验证请求是否来自微信服务器。通过 SHA1 算法计算签名进行验证。
var token = "你的Token"; // 在微信后台配置的 Token
var timestamp = "时间戳"; // 微信服务器传来的 timestamp
var nonce = "随机字符串"; // 微信服务器传来的 nonce
var encrypt = "加密消息"; // 微信服务器传来的 encrypt(加密消息)
// 计算签名并验证
var signature = SHAUtil.GetSHA1ForWeChat(token, timestamp, nonce, encrypt);
// 将计算的 signature 与微信传来的 signature 比对
微信消息加密
用于对发送给微信服务器的消息进行加密。
var data = "需要加密的明文消息";
var key = "AES密钥(Base64编码)"; // 在微信后台配置的 EncodingAESKey 解码得到
var receiveId = "企业ID或AppId"; // 企业微信为企业ID,公众号为AppId
// 加密消息(返回 Base64 编码的密文)
var encrypted = AESUtil.EncryptForWeChat(data, key, receiveId);
微信消息解密
用于解密来自微信服务器的消息。
var encryptedData = "微信服务器传来的加密消息(Base64编码)";
var key = "AES密钥(Base64编码)"; // 在微信后台配置的 EncodingAESKey 解码得到
var receiveId = "企业ID或AppId"; // 企业微信为企业ID,公众号为 AppId
// 解密消息
var decrypted = AESUtil.DecryptForWeChat(encryptedData, key, receiveId);
许可证
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- System.Reflection.Emit.Lightweight (>= 4.7.0)
- System.Security.Permissions (>= 9.0.4)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on Encrypt.Library:
| Package | Downloads |
|---|---|
|
TJC.Cyclops.Common
企服版框架工具类项目,三方引用包主要有:Encrypt.Library、HtmlAgilityPack、ICSharpCode.SharpZipLib、log4net、Newtonsoft.Json、NPOI、SkiaSharp、ZXing等 |
|
|
TJC.Cyclops.Wechat
企服版框架中微信对接相关业务核心项目 |
|
|
RiverLand.FrameWork.Common
框架的工具库集合 |
|
|
RiverLand.FrameWork.Regulation
规则引擎 |
|
|
TJC.Cyclops.UCenter
企服版框架中Discuz的UCenter用户同步注册、登录 |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.2.26.1 | 175 | 2/26/2026 |
| 2025.4.28.1 | 32,386 | 4/28/2025 |
| 2025.4.23.1 | 239 | 4/23/2025 |
| 2.1.3.3 | 19,400 | 10/28/2024 |
| 2.1.3.2 | 3,343 | 9/14/2024 |
| 2.1.3.1 | 11,951 | 7/26/2023 |
| 2.1.2.9 | 988 | 2/3/2023 |
| 2.0.6.8 | 600 | 9/1/2022 |
| 2.0.6.7 | 585 | 9/1/2022 |
| 2.0.6.6 | 625 | 8/12/2022 |
| 2.0.1.8 | 655 | 8/3/2022 |
| 1.0.0.3 | 611 | 7/29/2022 |
| 1.0.0.2 | 608 | 7/29/2022 |
| 1.0.0.1 | 626 | 7/29/2022 |
| 1.0.0 | 622 | 7/29/2022 |
Encrypt.Library is a common and quick encryption and decryption tool library