ABP 框架提供了字符串加密功能,允许加密和解密字符串。
安装
这个包在启动模板中已经默认安装了。所以,大多数情况下,你不需要手动安装它。
如果需要安装,建议使用 ABP CLI 安装这个包。
使用 ABP CLI
在项目文件夹 (.csproj 文件) 中打开命令行窗口,并输入以下命令:
abp add-package Volo.Abp.Security
手动安装
如果你想手动安装;
- 将
Volo.Abp.Security
NuGet 包添加到你的项目中:Install-PackageVolo.Abp.Security
- 将
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
Comments
小灰灰
7/13/2024 9:54:37 PM能发送 emoji 吗?后边跟一个 😊
不若风吹尘
5/22/2024 7:49:25 PM第一篇博文上线