项目

字符串加密

ABP提供字符串加密功能,支持对字符串进行加密解密操作。

安装说明

该包已默认包含在启动模板中。大多数情况下,您无需手动安装。

如需安装,建议使用 ABP CLI 进行包管理。

使用ABP CLI安装

在项目文件夹(.csproj文件所在目录)打开命令行窗口,输入以下命令:

abp add-package Volo.Abp.Security

手动安装

如需手动安装:

  1. 添加Volo.Abp.Security NuGet包至项目:

    dotnet add package Volo.Abp.Security

  2. 在模块的依赖列表中添加AbpSecurityModule

    [DependsOn(
        //...其他依赖项
        typeof(AbpSecurityModule) // <-- 按此方式添加模块依赖
        )]
    public class YourModule : AbpModule
    {
    }
    

使用字符串加密功能

所有加密操作均通过IStringEncryptionService接口提供。您可通过依赖注入使用该服务。

 public class MyService : DomainService
 {
     protected IStringEncryptionService StringEncryptionService { get; }

     public MyService(IStringEncryptionService stringEncryptionService)
     {
         StringEncryptionService = stringEncryptionService;
     }

     public string Encrypt(string value)
     {
         // 加密字符串
         return StringEncryptionService.Encrypt(value);
     }

     public string Decrypt(string value)
     {
         // 解密字符串
         return StringEncryptionService.Decrypt(value);
     }
 }

使用自定义密码短语

IStringEncryptionService方法提供带默认值的passPharase参数,不传递该参数时将使用默认密码短语。

// 使用默认密码短语
var encryptedValue = StringEncryptionService.Encrypt(value);

// 使用自定义密码短语
var encryptedValue = StringEncryptionService.Encrypt(value, "MyCustomPassPhrase");

// 加密与解密需使用相同参数
var decryptedValue = StringEncryptionService.Decrypt(value, "MyCustomPassPhrase");

使用自定义盐值

IStringEncryptionService方法提供带默认值的salt参数,不传递该参数时将使用默认盐值。

// 使用默认盐值
var encryptedValue = StringEncryptionService.Encrypt(value);

// 使用自定义盐值
var encryptedValue = StringEncryptionService.Encrypt(value, salt: Encoding.UTF8.GetBytes("MyCustomSalt")); 

// 加密与解密需使用相同参数
var decryptedValue = StringEncryptionService.Decrypt(value,  salt: Encoding.UTF8.GetBytes("MyCustomSalt"));

字符串加密配置选项

可通过AbpStringEncryptionOptions类型配置默认值:

Configure<AbpStringEncryptionOptions>(opts =>
{
    opts.DefaultPassPhrase = "MyStrongPassPhrase";
    opts.DefaultSalt = Encoding.UTF8.GetBytes("MyStrongSalt");
    opts.InitVectorBytes = Encoding.UTF8.GetBytes("YetAnotherStrongSalt");
    opts.Keysize = 512;
});
  • DefaultPassPhrase: 加解密默认密码短语。出于安全考虑建议修改默认值。
    默认值:gsKnGZ041HLL4IM8

  • DefaultSalt: 加解密过程中使用的盐值。
    默认值:Encoding.ASCII.GetBytes("hgt!16kl")

  • InitVectorBytes: 用于PasswordDeriveBytes函数调用的"盐"值。
    IV字节大小必须满足(keysize/8),默认keysize为256位,因此IV必须为32字节。使用16字符字符串转换为字节数组后可获得32字节。
    默认值:Encoding.ASCII.GetBytes("jkE49230Tf093b42")

  • Keysize: 加密算法的密钥长度常量。
    默认值:256

在本文档中