RuoVea.ExCrypt 8.0.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package RuoVea.ExCrypt --version 8.0.1.2
                    
NuGet\Install-Package RuoVea.ExCrypt -Version 8.0.1.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RuoVea.ExCrypt" Version="8.0.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RuoVea.ExCrypt" Version="8.0.1.2" />
                    
Directory.Packages.props
<PackageReference Include="RuoVea.ExCrypt" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RuoVea.ExCrypt --version 8.0.1.2
                    
#r "nuget: RuoVea.ExCrypt, 8.0.1.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RuoVea.ExCrypt@8.0.1.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RuoVea.ExCrypt&version=8.0.1.2
                    
Install as a Cake Addin
#tool nuget:?package=RuoVea.ExCrypt&version=8.0.1.2
                    
Install as a Cake Tool

🔐 RuoVea.ExCrypt

一站式 .NET 加密工具库 — 集成 AES、TripleDES、RSA、SHA-1/256/384/512、HMAC、MD5、Base64 等 14+ 种加密/哈希算法,提供静态方法与流畅的 string 扩展方法,并内置中、英、法、日、粤语、越南语等 7 种语言的异常提示。


📖 目录


📋 概览

RuoVea.ExCrypt 为 .NET 开发者提供了开箱即用的加密原语封装,避免直接操作 CryptoStream / KeySize / Padding 的繁琐细节。

 ┌──────────────────────────────────────────────────┐
 │              RuoVea.ExCrypt                       │
 ├──────────────────────────────────────────────────┤
 │  对称加密        哈希             HMAC            │
 │  ├─ AES (CBC/ECB) ├─ SHA-1       ├─ HMAC-SHA1    │
 │  └─ TripleDES     ├─ SHA-256     ├─ HMAC-SHA256  │
 │                   ├─ SHA-384     ├─ HMAC-SHA384  │
 │  非对称加密        ├─ SHA-512     ├─ HMAC-SHA512  │
 │  └─ RSA           └─ MD5         └─ HMAC-MD5     │
 │                                                   │
 │  编码              密钥生成        扩展方法        │
 │  └─ Base64         ├─ MachineKey  └─ string.*     │
 │                    └─ AES/DES KeyGen              │
 ├──────────────────────────────────────────────────┤
 │  国际化: zh-CN | zh-TW | zh-HK | en | fr | ja | vi│
 └──────────────────────────────────────────────────┘

设计原则

原则 说明
零配置启动 所有方法均为 static,无需实例化、无需 DI 注册
安全默认值 AES-256 (KeySize=256)、RSA-2048、PKCS7 填充均为开箱默认
参数校验 入参空值和长度自动校验,抛出含本地化消息的异常
不抛加密异常 AES / TripleDES 的 Encrypt/Decrypt 在 CryptoStream 失败时返回 null,而非抛出

📦 安装

.NET CLI

# .NET 8.0
dotnet add package RuoVea.ExCrypt --version 8.0.1.1

# .NET 10.0
dotnet add package RuoVea.ExCrypt --version 10.0.0.0

Package Manager

Install-Package RuoVea.ExCrypt -Version 8.0.1.1

PackageReference

<PackageReference Include="RuoVea.ExCrypt" Version="8.0.1.1" />

支持的 Target Framework

TFM 最低版本
net8.0 8.0.1.1
net10.0 10.0.0.0

⚡ 30 秒快速开始

1. 导入命名空间

using RuoVea.ExCrypt;                      // 所有加密类
using RuoVea.ExCrypt.Encryptions.Domain;   // AESKey, EnumMD5Length, RSAKey 等

2. 第一行加密代码

// <inheritdoc cref="AESCrypt.AESEncrypt(string, string, string)"/>
// 生成密钥 & 加密
var aesKey = AESCrypt.CreateAesKey();
string cipher = AESCrypt.AESEncrypt("Hello, 世界!", aesKey.Key, aesKey.IV);

// <inheritdoc cref="AESCrypt.AESDecrypt(string, string, string)"/>
string plain = AESCrypt.AESDecrypt(cipher, aesKey.Key, aesKey.IV);
Console.WriteLine(plain); // "Hello, 世界!"

3. 使用扩展方法(更流畅)

// <inheritdoc cref="StringExtensions.ToAESEncrypt"/>
string cipher = "敏感数据".ToAESEncrypt("your-32-char-key-here!!!!!!!");

// <inheritdoc cref="StringExtensions.ToMD5Encrypt"/>
string hash   = "password123".ToMD5Encrypt(EnumMD5Length.L32);

// <inheritdoc cref="StringExtensions.ToRSAEncrpyt"/>
string rsaEnc = "机密".ToRSAEncrpyt(publicKeyXml);

30 秒内你完成了: 密钥生成 → AES-256-CBC 加密 → Base64 编码输出 → 解密还原。以及 MD5 哈希和 RSA 加密。


🧩 核心场景

场景一:对称加密(AES)

┌──────────┐     AESEncrypt(data, key, vector)     ┌──────────────┐
│  明文     │ ──────────────────────────────────▶  │  Base64 密文  │
│ (string)  │                                       │  (string)     │
└──────────┘                                       └──────┬───────┘
                                                          │
                                                  AESDecrypt(cipher, key, vector)
                                                          │
                                                          ▼
                                                  ┌──────────────┐
                                                  │  明文 (string)│
                                                  └──────────────┘
🔹 AES-CBC 模式(推荐)
// <inheritdoc cref="AESCrypt.CreateAesKey"/>
AESKey keyMaterial = AESCrypt.CreateAesKey();

// <inheritdoc cref="AESCrypt.AESEncrypt(string, string, string)"/>
// 输出: Base64 编码的密文字符串
string encrypted = AESCrypt.AESEncrypt(
    data:   "订单金额: ¥1,280.00",
    key:    keyMaterial.Key,   // 32 字符
    vector: keyMaterial.IV     // 16 字符
);

// <inheritdoc cref="AESCrypt.AESDecrypt(string, string, string)"/>
string decrypted = AESCrypt.AESDecrypt(encrypted, keyMaterial.Key, keyMaterial.IV);
// decrypted == "订单金额: ¥1,280.00"
// 字节级加解密(适用于二进制数据)
byte[] imageBytes = File.ReadAllBytes("avatar.png");

// <inheritdoc cref="AESCrypt.AESEncrypt(byte[], string, string)"/>
byte[] encryptedBytes = AESCrypt.AESEncrypt(imageBytes, keyMaterial.Key, keyMaterial.IV);

// <inheritdoc cref="AESCrypt.AESDecrypt(byte[], string, string)"/>
byte[] decryptedBytes = AESCrypt.AESDecrypt(encryptedBytes, keyMaterial.Key, keyMaterial.IV);

性能陷阱: AES-CBC 模式下每次加密都会 CreateEncryptor,适合离散调用。若需高频加密(> 1000次/秒),考虑用 Aes.Create() 复用实例自行管理。

🔹 AES-ECB 模式(兼容旧系统)
// <inheritdoc cref="AESCrypt.AESEncrypt(string, string)"/>
// ECB 模式:无需 IV,仅需 32 字符密钥
string encrypted = AESCrypt.AESEncrypt("兼容旧系统数据", "your-32-characters-key-right-here");
string decrypted = AESCrypt.AESDecrypt(encrypted, "your-32-characters-key-right-here");

⚠️ 安全警告: ECB 模式不隐藏数据模式,相同明文块产生相同密文块。仅用于兼容旧系统,新项目请使用 CBC 模式。


场景二:哈希与数据完整性

┌────────┐   SHA-1/256/384/512/MD5    ┌──────────────┐
│  输入   │ ───────────────────────▶  │  十六进制哈希  │
│ string  │                            │  (string)     │
└────────┘                            └──────────────┘
用例: 密码存储、文件指纹、数据去重、区块链
// <inheritdoc cref="SHA256Crypt.Encrypt"/>
string sha256Hash = SHA256Crypt.Encrypt("需要哈希的数据");

// <inheritdoc cref="SHA384Crypt.Encrypt"/>
string sha384Hash = SHA384Crypt.Encrypt("需要哈希的数据");

// <inheritdoc cref="SHA512Crypt.Encrypt"/>
string sha512Hash = SHA512Crypt.Encrypt("需要哈希的数据");

// <inheritdoc cref="SHA1Crypt.Encrypt"/>
string sha1Hash   = SHA1Crypt.Encrypt("兼容旧系统的 SHA-1");
MD5(三合一)
// <inheritdoc cref="Md5Crypt.Encrypt"/>
// 标准 32 位 MD5(十六进制大写)
string md5_32 = Md5Crypt.Encrypt("input", EnumMD5Length.L32);

// 截断 16 位 MD5(取中间 8 字节,16 个十六进制字符)
string md5_16 = Md5Crypt.Encrypt("input", EnumMD5Length.L16);

// <inheritdoc cref="Md5Crypt.Hash"/>
// 32 位 MD5(小写)—— 已改为 UTF-8 编码,跨平台一致
string md5Lower = Md5Crypt.Hash("input");

// <inheritdoc cref="Md5Crypt.JsMD5"/>
// JsMD5(小写,兼容前端 JavaScript MD5 库)
string jsMd5 = Md5Crypt.JsMD5("input");

已修复: Md5Crypt.Hash 已改用 Encoding.UTF8 替代 Encoding.Default,跨平台哈希结果一致。


场景三:消息认证码(HMAC)

┌────────┐    HMAC(algorithm, key)     ┌──────────────┐
│  消息   │ ────────────────────────▶  │  HMAC 签名    │
│ string  │                            │  (十六进制)    │
│  + key  │                            └──────────────┘
└────────┘  用例: API 签名、防篡改令牌、JWT
// <inheritdoc cref="HMACSHA256Crypt.Encrypt"/>
string hmacSha256 = HMACSHA256Crypt.Encrypt(
    srcString: "GET\n/api/orders\n1700000000",
    key:       "your-api-secret"
);

// <inheritdoc cref="HMACSHA512Crypt.Encrypt"/>
string hmacSha512 = HMACSHA512Crypt.Encrypt("payload", "key");

// <inheritdoc cref="HMACSHA1Crypt.Encrypt"/>
string hmacSha1   = HMACSHA1Crypt.Encrypt("payload", "key");

// <inheritdoc cref="HMACSHA384Crypt.Encrypt"/>
string hmacSha384 = HMACSHA384Crypt.Encrypt("payload", "key");

// <inheritdoc cref="Md5Crypt.HMACMD5"/>
string hmacMd5    = Md5Crypt.HMACMD5("payload", "key");

API 签名验证示例

// <inheritdoc>
public static class ApiSignatureValidator
{
    /// <summary>
    /// 使用 HMAC-SHA256 生成 API 请求签名
    /// </summary>
    public static string Sign(string method, string path, long timestamp, string secret)
    {
        var payload = $"{method}\n{path}\n{timestamp}";
        return HMACSHA256Crypt.Encrypt(payload, secret);
    }

    /// <summary>
    /// 验证签名(恒定时间比较以避免时序攻击)
    /// </summary>
    public static bool Verify(string signature, string method, string path,
        long timestamp, string secret, TimeSpan maxAge)
    {
        // 1. 检查时间戳新鲜度(防重放攻击)
        var requestTime = DateTimeOffset.FromUnixTimeSeconds(timestamp);
        if (DateTimeOffset.UtcNow - requestTime > maxAge)
            return false;

        // 2. 重新计算签名并比较
        var expected = Sign(method, path, timestamp, secret);
        return CryptographicOperations.FixedTimeEquals(
            Encoding.UTF8.GetBytes(expected),
            Encoding.UTF8.GetBytes(signature));
    }
}

场景四:非对称加密(RSA)

┌──────────┐                                      ┌──────────┐
│  发送方   │  ① 获取公钥                           │  接收方   │
│          │ ◀─────────────────────────────────   │          │
│          │                                      │          │
│          │  ② RSA.Encrypt(data, publicKey)       │          │
│          │ ─────────────────────────────────▶   │          │
│          │      (Base64 密文)                     │          │
│          │                                      │          │
│          │                         ③ RSA.Decrypt(cipher, privateKey)
│          │                                      │          │
└──────────┘                                      └──────────┘
// <inheritdoc cref="RSACrypt.GenerateSecretKey"/>
// 生成密钥对(返回 ValueTuple)
(string publicKey, string privateKey) = RSACrypt.GenerateSecretKey(keySize: 2048);

// 保存私钥(安全存储!切勿提交到版本控制)
await File.WriteAllTextAsync("private.key", privateKey);

// <inheritdoc cref="RSACrypt.Encrypt"/>
string cipher = RSACrypt.Encrypt(
    text:      "AES 会话密钥: x7K9mP2qR5vW8zB3",
    publicKey: publicKey,
    keySize:   2048
);

// <inheritdoc cref="RSACrypt.Decrypt"/>
string sessionKey = RSACrypt.Decrypt(
    text:       cipher,
    privateKey: privateKey,
    keySize:    2048
);

自定义 RSA XML 密钥格式

// <inheritdoc cref="RSAKeyExtensions.ToLvccXmlString"/>
using var rsa = RSA.Create();
string customXml = rsa.ToLvccXmlString(includePrivateParameters: true);

// <inheritdoc cref="RSAKeyExtensions.FromLvccXmlString"/>
using var rsa2 = RSA.Create();
rsa2.FromLvccXmlString(customXml);

⚠️ 线程安全: RSACrypt 为纯静态方法,每次调用都创建新的 RSACryptoServiceProvider 实例,因此天然线程安全。

性能陷阱: RSA 加密/解密是 CPU 密集型操作。对于大量数据,推荐混合加密:用 RSA 加密 AES 密钥,用 AES 加密实际数据。


场景五:Base64 编解码

// <inheritdoc cref="Base64Crypt.Base64Encrypt(string)"/>
// 默认 UTF-8 编码
string encoded = Base64Crypt.Base64Encrypt("Hello, 世界!");
// → "SGVsbG8sIOS4lueVjCE="

// <inheritdoc cref="Base64Crypt.Base64Decrypt(string)"/>
string decoded = Base64Crypt.Base64Decrypt(encoded);
// → "Hello, 世界!"

// 自定义编码
string encodedGbk = Base64Crypt.Base64Encrypt("中文", Encoding.GetEncoding("GBK"));
string decodedGbk = Base64Crypt.Base64Decrypt(encodedGbk, Encoding.GetEncoding("GBK"));

场景六:机器密钥生成

// <inheritdoc cref="MachineKey.CreateDecryptionKey"/>
// 解密密钥:长度 16–48(推荐 48)
string decryptionKey = MachineKey.CreateDecryptionKey(length: 48);

// <inheritdoc cref="MachineKey.CreateValidationKey"/>
// 验证密钥:长度 48–128(推荐 128)
string validationKey = MachineKey.CreateValidationKey(length: 128);

使用 RandomNumberGenerator.Create() 生成密码学安全的随机字节,适用于 ASP.NET machineKey 配置场景。


场景七:流畅扩展方法

using RuoVea.ExCrypt; // 扩展方法在此命名空间

// <inheritdoc cref="StringExtensions.ToMD5Encrypt"/>
string md5_32 = "hello".ToMD5Encrypt();                // 默认 32 位
string md5_16 = "hello".ToMD5Encrypt(EnumMD5Length.L16);

// <inheritdoc cref="StringExtensions.ToAESEncrypt"/>
string aesEnc = "敏感数据".ToAESEncrypt("your-32-char-key-here!!!!!!!");

// <inheritdoc cref="StringExtensions.ToAESDecrypt"/>
string aesDec = aesEnc.ToAESDecrypt("your-32-char-key-here!!!!!!!");

// <inheritdoc cref="StringExtensions.ToDESCEncrypt"/>
string desEnc = "数据".ToDESCEncrypt("your-24-char-key-right-here");

// <inheritdoc cref="StringExtensions.ToDESCDecrypt"/>
string desDec = desEnc.ToDESCDecrypt("your-24-char-key-right-here");

// <inheritdoc cref="StringExtensions.ToRSAEncrpyt"/>
string rsaEnc = "机密".ToRSAEncrpyt(publicKey);

// <inheritdoc cref="StringExtensions.ToRSADecrypt"/>
string rsaDec = rsaEnc.ToRSADecrypt(privateKey);

⚙️ 配置选项详解

AES 配置

参数 约束 默认值 说明
key 长度 = 32 无(必传) 256-bit 密钥,UTF-8 编码后取前 32 字节
vector (IV) 长度 = 16 无(CBC 必传) 128-bit 初始化向量
KeySize 256 ECB 模式固定
Padding PKCS7 ECB 模式固定
Mode ECB / CBC 由重载决定

TripleDES 配置

参数 约束 默认值 说明
key 长度 = 24 无(必传) 192-bit 密钥(实际有效 112/168 bit)
vector (IV) 长度 = 8 无(CBC 必传) 64-bit 初始化向量
Padding PKCS7 内部私有方法固定

RSA 配置

参数 约束 默认值 说明
keySize 2048 ≤ n ≤ 16384,且 n % 8 = 0 2048 密钥长度(位)
publicKey XML 格式字符串 无(必传) RSACryptoServiceProvider.ToXmlString(false) 格式
privateKey XML 格式字符串 无(必传) RSACryptoServiceProvider.ToXmlString(true) 格式

MD5 配置

参数 可选值 默认值 说明
EnumMD5Length.L32 L16 / L32 L32 L16 返回 16 个十六进制字符(中间 8 字节)

MachineKey 配置

方法 长度范围 推荐值
CreateDecryptionKey 16 – 48 48
CreateValidationKey 48 – 128 128

🛡️ 错误处理与日志

异常体系

所有公共 API 在入参不合法时会抛出 ArgumentException(含本地化消息):

// AES 密钥长度错误 → ArgumentException
//   → "密钥的长度必须等于32。"
//   → "The length of key must equal to 32."
//   → "La longueur de key doit être égale à 32."
AESCrypt.AESEncrypt("data", "too-short"); // ❌ ArgumentException

加密失败静默处理

AES 和 TripleDES 的 Encrypt/Decrypt 方法在 CryptoStream 异常时返回 null(而非抛出),由调用方决定如何处理:

// <inheritdoc>
string result = AESCrypt.AESDecrypt(malformedCipher, key, iv);

if (result == null)
{
    // 记录日志并降级
    _logger.LogWarning("AES 解密失败,密文可能已损坏或密钥不匹配");
    return FallbackValue;
}

推荐日志模式

// <inheritdoc>
using Microsoft.Extensions.Logging;

public class SecureDataService
{
    private readonly ILogger<SecureDataService> _logger;

    public SecureDataService(ILogger<SecureDataService> logger) => _logger = logger;

    public string? DecryptSafe(string cipher, string key, string iv)
    {
        try
        {
            var result = AESCrypt.AESDecrypt(cipher, key, iv);
            if (result == null)
                _logger.LogWarning("AES 解密返回 null,密文: {CipherPreview}...",
                    cipher[..Math.Min(cipher.Length, 16)]);
            return result;
        }
        catch (ArgumentException ex)
        {
            _logger.LogError(ex, "AES 解密参数校验失败");
            throw; // 参数错误应当暴露给调用方
        }
        catch (FormatException ex)
        {
            _logger.LogError(ex, "Base64 解密时密文格式非法");
            return null;
        }
    }
}

🧵 线程安全

组件 线程安全 说明
AESCrypt ✅ 是 CreateAesKey() 内部 lock(_randomLock) 保护 Random 实例
DESCCrypt ✅ 是 同上,CreateDesKey() / CreateDesIv() 加锁保护
RSACrypt ✅ 是 每次调用新建 RSACryptoServiceProvider
Base64Crypt ✅ 是 纯计算,无共享状态
Md5Crypt ✅ 是 每次调用新建 MD5 / HMACMD5 实例
SHA*Crypt ✅ 是 Md5Crypt
HMACSHA*Crypt ✅ 是 Md5Crypt
MachineKey ✅ 是 使用 RandomNumberGenerator.Create()(线程安全)
StringExtensions ✅ 是 扩展方法本身无状态,委托给对应静态方法
i18n ✅ 是 ResourceManager 线程安全

CreateAesKey() / CreateDesKey() / CreateDesIv() 内部已加锁保护,多线程安全。


📊 算法速查表

算法类 输入 输出 用途
AESCrypt string / byte[] string (Base64) / byte[] 敏感数据加密(CBC)/ 兼容旧系统(ECB)
DESCCrypt string / byte[] string (Base64) / byte[] 旧系统兼容(推荐迁移到 AES)
RSACrypt string string (Base64) 小数据加密、密钥交换、数字签名
SHA1Crypt string string (hex) 旧系统兼容(不推荐新项目)
SHA256Crypt string string (hex) 数据完整性、证书
SHA384Crypt string string (hex) 高安全性哈希
SHA512Crypt string string (hex) 最高安全性哈希
Md5Crypt.Encrypt string string (hex) 非安全哈希、文件去重
Md5Crypt.JsMD5 string string (hex, 小写) 前端 JS 兼容
Md5Crypt.HMACMD5 string + key string (hex) 消息认证(旧)
HMACSHA256Crypt string + key string (hex) API 签名、JWT
HMACSHA512Crypt string + key string (hex) 高安全 API 签名
Base64Crypt string string 编码传输
MachineKey int (长度) string (hex) ASP.NET machineKey 配置

🌍 国际化

错误消息支持以下语言,根据 CultureInfo.CurrentUICulture 自动切换:

语言 区域代码
简体中文 zh-CN
繁体中文(台湾) zh-TW
粤语(香港) zh-HK
英语 en-US
法语 fr-FR
日语 ja-JP
越南语 vi-VN
// 当前线程 UI 文化为 fr-FR 时:
// ArgumentException → "La longueur de key doit être égale à 32."
AESCrypt.AESEncrypt("data", "short-key");

🗺️ 版本迁移指南

从旧自研加密代码迁移

旧代码模式 迁移到 RuoVea.ExCrypt
new AesManaged() + CryptoStream 手动操作 AESCrypt.AESEncrypt(data, key, vector)
new MD5CryptoServiceProvider() + 手动十六进制转换 Md5Crypt.Encrypt(data)
new RSACryptoServiceProvider() + 手动密钥管理 RSACrypt.GenerateSecretKey() + RSACrypt.Encrypt()
手动 Convert.ToBase64String + Encoding.UTF8.GetBytes Base64Crypt.Base64Encrypt(data)

v8.0.x → v10.0.x

  • API 无变化。v10.0.x 仅在 net10.0 TFM 上编译,所有公开 API 签名保持一致。
  • 包引用依赖 Portable.BouncyCastle 1.9.0 目前未被实际使用(保留以备未来扩展)。

📄 License

MIT License © RuoVea


🔗 相关资源: NuGet Gallery · 问题反馈

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on RuoVea.ExCrypt:

Package Downloads
RuoVea.ExFilter

注入 进行全局的异常日志收集、执行操作日志、参数验证,支持简体中文、繁体中文、粤语、日语、法语、英语.services.ExceptionSetup();// 注入 全局错误日志处 services.ExceptionSetup(ExceptionLog actionOptions);// 注入 全局错误日志处 services.ExceptionSetup(builder.Configuration.GetSection("AopOption:ExceptionLog"));// 注入 全局错误日志处 services.RequestActionSetup();// 注入 请求日志拦截 [执行操作日志、参数验证 ] services.RequestActionSetup(RequestLog actionOptions);// 注入 请求日志拦截 [执行操作日志、参数验证 ] services.RequestActionSetup(builder.Configuration.GetSection("AopOption:RequestLog"));// 注入 请求日志拦截 [执行操作日志、参数验证 ] services.ResourceSetup();//对资源型信息进行过滤 services.ResultSetup();//对结果进行统一 services.ApISafeSetup(AppSign actionOptions);//接口安全校验 services.ApISafeSetup(builder.Configuration.GetSection("AopOption:AppSign"));//接口安全校验 services.ApISignSetup(AppSign actionOptions);//签名验证 ( appKey + signKey + timeStamp + data ); services.ApISignSetup(builder.Configuration.GetSection("AopOption:AppSign"));//签名验证 ( appKey + signKey + timeStamp + data ); services.AddValidateSetup();//模型校验 services.AddUiFilesZipSetup();//将前端UI压缩文件进行解压 不进行接口安全校验 -> NonAplSafeAttribute 不签名验证 -> NonAplSignAttribute 不进行全局的异常日志收集 -> NonExceptionAttribute 不对资源型信息进行过滤 -> NonResourceAttribute 不对结果进行统一 -> NonRestfulResultAttribute

RuoVea.ExPws

集成加密工具类 AES、 Base64、DESC、HMACSHA1、HMACSHA256、HMACSHA384、HMACSHA512、MD5、JsMD5、RSA、SHA1、SHA256、SHA384、、SHA512 加密算法;字符串加密拓展 ToMD5Encrypt、ToAESEncrypt、ToAESDecrypt、ToDESCEncrypt、ToDESCDecrypt、ToRSAEncrpyt、ToRSADecrypt,支持简体中文、繁体中文、粤语、日语、法语、英语.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.0.1 155 6/24/2026
10.0.0 736 1/12/2026
9.0.0 1,340 7/25/2025
8.0.1.2 263 6/24/2026
8.0.1.1 598 5/28/2026
8.0.1 7,814 8/28/2024
8.0.0 359 11/23/2023
7.0.1 9,531 8/28/2024
7.0.0 341 7/23/2024
6.0.3.1 17,645 8/28/2024
6.0.2 1,212 9/16/2022
6.0.1 562 8/24/2022
6.0.0 2,162 2/9/2022
5.0.8 669 8/28/2024
5.0.7.1 253 11/23/2023
5.0.7 934 11/13/2021
5.0.6 602 11/5/2021
2.1.2 197 8/28/2024
2.1.1 207 11/24/2023
Loading failed