加密工具(Aegis.Security.Encryption)
Aegis.Security.Encryption 是一组纯代码调用型加密工具包。它主要通过扩展方法提供对称加密、非对称加密、签名和摘要能力,不依赖组件声明,也不要求额外中间件。
组件概览
| 字段 | 说明 |
|---|---|
| 组件名称 | 加密工具 |
| 真实类库 | Aegis.Security.Encryption |
| 组件定位 | 加解密、签名与摘要工具包 |
| 引入方式 | 安装 NuGet,直接引用命名空间并调用扩展方法 |
是否需要 Component.deps.json | 否 |
| 核心能力 | AES、DES、SM4、RSA、SM2、DSA、SM3 |
| 常见入口 | Aegis.Security.Encryption.Extensions |
什么时候要用它
适合场景:
- 需要对敏感文本或业务密文做加解密
- 需要做签名验签
- 需要做摘要校验
- 需要兼容国密场景
最小可运行路径
第一步:安装包
dotnet add package Aegis.Security.Encryption
第二步:引用命名空间
using Aegis.Security.Encryption.Extensions;
第三步:直接调用扩展方法
var plainText = "这是需要加密的敏感数据";
var key = "1234567890123456";
var iv = "abcdefghijklmnop";
var cipher = plainText.AESEncrypt(key, iv);
var text = cipher.AESDecrypt(key, iv);
这组能力怎么选
| 能力 | 适合什么场景 |
|---|---|
| AES | 默认对称加密首选 |
| DES | 兼容旧系统,不建议新项目默认使用 |
| SM4 | 国密对称加密 |
| RSA | 常见非对称加密与签名 |
| SM2 | 国密非对称加密与签名 |
| DSA | 兼容特定签名场景 |
| SM3 | 国密摘要 |
最常见的使用方式
AES
var cipher = plainText.AESEncrypt(key, iv);
var text = cipher.AESDecrypt(key, iv);
DES
var cipher = plainText.DESEncrypt("12345678", "abcdefgh");
var text = cipher.DESDecrypt("12345678", "abcdefgh");
SM4
var keyHex = SM4Extensions.GenerateSM4KeyHex();
var ivHex = SM4Extensions.GenerateSM4IVHex();
var cipher = plainText.SM4Encrypt(keyHex, ivHex);
var text = cipher.SM4Decrypt(keyHex, ivHex);
RSA 加解密
var (privateKey, publicKey) = RSAExtensions.GenerateRSAKeyPair();
var cipher = plainText.RSAEncrypt(publicKey);
var text = cipher.RSADecrypt(privateKey);
RSA 签名验签
var (privateKey, publicKey) = RSAExtensions.GenerateRSAKeyPair();
var signature = plainText.RSASign(privateKey);
var verified = plainText.RSAVerify(signature, publicKey);
SM3 摘要
var hash = plainText.SM3Encrypt();
边界与限制
这是代码调用型工具包
当前组件不通过 Component.deps.json 装配。
也就是说你只需要:
- 安装包
- 引用命名空间
- 直接调用扩展方法
密钥管理不属于当前组件
当前组件负责“算法调用”,不负责“密钥治理”。
正式环境下,密钥、IV、私钥、公钥应该由项目自己的安全方案管理。
新项目默认优先级
更推荐:
- 对称加密优先 AES
- 非对称优先 RSA
- 国密场景再选 SM2 / SM3 / SM4
接入后怎么确认已经生效
可以这样确认:
- 工具方法可以正常调用
- 加密后能解密回原文
- 签名后可以验签通过
常见问题
为什么这里没有组件声明
因为它本质上是工具方法集合,不是需要框架自动装配的运行时组件。
新项目默认该选 AES 还是 DES
默认选 AES。
DES 更偏兼容旧系统。
文档里为什么没有展开密钥管理方案
因为密钥管理属于项目安全治理,不属于当前组件自身职责。