ABP框架基础功能之字符串加密

Avatar
不若风吹尘
2024-05-22T18:20:54
589
2

ABP 框架提供了字符串加密功能,允许加密和解密字符串。

安装

这个包在启动模板中已经默认安装了。所以,大多数情况下,你不需要手动安装它。

如果需要安装,建议使用 ABP CLI 安装这个包。

使用 ABP CLI

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

abp add-package Volo.Abp.Security

手动安装

如果你想手动安装;

  1. Volo.Abp.Security NuGet 包添加到你的项目中:Install-Package Volo.Abp.Security
  2. AbpSecurityModule 添加到你的模块的依赖列表中:
[DependsOn(
    //...other dependencies
    typeof(AbpSecurityModule) // <-- Add module dependency like that
    )]
public class YourModule : AbpModule
{
}

使用字符串加密

所有加密操作都包含在 IStringEncryptionService 中。你可以注入它并开始使用。

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

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

    public string Encrypt(string value)
    {
        // To enrcypt a value
        return StringEncryptionService.Encrypt(value);
    }

    public string Decrpyt(string value)
    {
        // To decrypt a value
        return StringEncryptionService.Decrypt(value);
    }
}

使用自定义 PassPhrase

IStringEncryptionService 方法有一个带默认值的 passPharase 参数,如果你没有传入 passPhrase 参数,它会使用默认的 PassPhrase

// Default Pass Phrase
var encryptedValue = StringEncryptionService.Encrypt(value);

// Custom Pass Phrase
var encryptedValue = StringEncryptionService.Encrypt(value, "MyCustomPassPhrase");

// Encrypt & Decrypt have same parameters.
var decryptedValue = StringEncryptionService.Decrypt(value, "MyCustomPassPhrase");

使用自定义 Salt

IStringEncryptionService 方法有一个带默认值的 salt 参数,如果你没有传入该参数,它会使用默认的 Salt

// Default Salt
var encryptedValue = StringEncryptionService.Encrypt(value);

// Custom Salt
var encryptedValue = StringEncryptionService.Encrypt(value, salt: Encoding.UTF8.GetBytes("MyCustomSalt"));

// Encrypt & Decrypt have same parameters.
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 的大小(以字节计)必须等于(密钥大小 / 8)。默认的密钥大小是 256,因此 IV 必须是 32 个字节长。在这里使用 16 个字符的字符串,在转换为字节数组时会得到 32 个字节。默认值:Encoding.ASCII.GetBytes("jkE49230Tf093b42")
  • Keysize:这个常量用于确定加密算法的密钥大小。默认值:256

Last Modification : 9/20/2024 4:28:56 AM


1

Comments

小灰灰
小灰灰
7/13/2024 9:54:37 PM

能发送 emoji 吗?后边跟一个 😊

不若风吹尘
不若风吹尘
5/22/2024 7:49:25 PM
2

第一篇博文上线

In This Document