1 重构Services.Customers.CustomerServiceDefaults
#region 用户密码加密相关配置设定
/// <summary>
/// 【哈希密钥长度】
/// <remarks>
/// 摘要:
/// 设定哈希(Hash)加密方式所需密钥字符串长度的整型值。
/// 说明:
/// 当使用哈希方式对用户的密进行加密操作进行加密操作时,设定密钥字符串的长度值为:5个字符。
/// </remarks>
/// </summary>
public static int PasswordSaltKeySize => 5;
/// <summary>
/// 【哈希加密默认编码格式】
/// <remarks>
/// 摘要:
/// 设定哈希加密算法名称的字符串常量(默认:以最高安全性及其最大长度的"SHA512"加密算法,对用户的密码进行加密操作。)。
/// </remarks>
/// </summary>
public static string DefaultHashedPasswordFormat => "SHA512";
#endregion
2 Services.Security.IEncryptionService
namespace Services.Security
{
/// <summary>
/// 【加密服务--接口】
/// <remarks>
/// 摘要:
/// 继承于该接口的具体实现类中的方法成员实现了哈希加密操作方式,为用户输入的密码进行加密提供相应的方法支撑。
/// </remarks>
/// </summary>
public interface IEncryptionService
{
/// <param name="size">一个指定字节数组实例长度的整型值。</param>
/// <summary>
/// 【生成密钥】
/// <remarks>
/// 摘要:
/// 生成哈希(Hash)加密方式所需的密钥字符串(默认:5个字符的字符串),为哈希加/解密操作提供数据支撑。
/// <returns>
/// 返回:
/// 哈希(Hash)加密方式所需的密钥字符串(默认:5个字符的字符串)。
/// </returns>
/// </remarks>
/// </summary>
string CreateSaltKey(int size);
/// <param name="password">一个指定的需要被加密码(明码)字符串。</param>
/// <param name="saltKey">一只用于哈希加密方式的密钥字符串。</param>
/// <param name="passwordFormat">1个指定的哈希加密算法的名称(SHA-224、SHA-256、SHA-384,和 SHA-512等)。</param>
/// <summary>
/// 【哈希方式生成密码】
/// <remarks>
/// 摘要:
/// 通对哈希加密算法方式对指定的密码字符进行加密操作,最后返回一个加密后的密码字符串(该加密字符串定长,长度由算法名称决定)。
/// </remarks>
/// <returns>
/// 返回:
/// 一个经过哈希加密算法加密后的密码字符串(该加密字符串定长,长度由算法名称决定)。
/// </returns>
/// </summary>
string CreatePasswordHash(string password, string saltKey, string passwordFormat);
}
}
3 Services.Security.EncryptionService
using System.Security.Cryptography;
using System.Text;
using Core;
namespace Services.Security
{
/// <summary>
/// 【加密服务--类】
/// <remarks>
/// 摘要:
/// 该类中的方法成员实现了哈希加密操作方式,为用户输入的密码进行加密提供相应的方法支撑。
/// </remarks>
/// </summary>
public class EncryptionService : IEncryptionService
{
/// <param name="size">一个指定字节数组实例长度的整型值。</param>
/// <summary>
/// 【生成密钥】
/// <remarks>
/// 摘要:
/// 生成哈希(Hash)加密方式所需的密钥字符串(默认:5个字符的字符串),为哈希加/解密操作提供数据支撑。
/// <returns>
/// 返回:
/// 哈希(Hash)加密方式所需的密钥字符串(默认:5个字符的字符串)。
/// </returns>
/// </remarks>
/// </summary>
public virtual string CreateSaltKey(int size)
{
//获取高质量的随机数。
using var provider = RandomNumberGenerator.Create();
var buff = new byte[size];
provider.GetBytes(buff);
//把存储字节数组实例中的密钥,转换为字符串形式的密钥。
return Convert.ToBase64String(buff);
}
/// <param name="password">一个指定的需要被加密码(明码)字符串。</param>
/// <param name="saltKey">一只用于哈希加密方式的密钥字符串。</param>
/// <param name="passwordFormat">1个指定的哈希加密算法的名称(SHA-224、SHA-256、SHA-384,和 SHA-512等)。</param>
/// <summary>
/// 【哈希方式生成密码】
/// <remarks>
/// 摘要:
/// 通对哈希加密算法方式对指定的密码字符进行加密操作,最后返回一个加密后的密码字符串(该加密字符串定长,长度由算法名称决定)。
/// </remarks>
/// <returns>
/// 返回:
/// 一个经过哈希加密算法加密后的密码字符串(该加密字符串定长,长度由算法名称决定)。
/// </returns>
/// </summary>
public virtual string CreatePasswordHash(string password, string saltkey, string passwordFormat)
{
return HashHelper.CreateHash(Encoding.UTF8.GetBytes(string.Concat(password, saltkey)), passwordFormat);
}
}
}
4 重构Services.Installation.InstallationService.InstallCustomersAndUsersAsync
var saltKey = _encryptionService.CreateSaltKey(CustomerServicesDefaults.PasswordSaltKeySize);
var customerList = new List<Customer>
{
new Customer
{
Username = "Test",
Email = "Test@yourStore.com",
Avatar="/images/Avatar/子鼠fufu.png",
PasswordSalt=saltKey,
Password = _encryptionService.CreatePasswordHash("1", saltKey,CustomerServicesDefaults.DefaultHashedPasswordFormat),
IsSystemAccount= true,
Active = true,
Deleted = false,
CreatedDate = DateTime.Now,
},
new Customer
{
Username = "Test_1",
Email = "Test_1@yourStore.com",
Avatar="/images/Avatar/丑牛fufu.png",
PasswordSalt=saltKey,
Password = _encryptionService.CreatePasswordHash("1", saltKey,CustomerServicesDefaults.DefaultHashedPasswordFormat),
IsSystemAccount= true,
Active = true,
Deleted = false,
CreatedDate = DateTime.Now,
},
new Customer
{
Username = "Test_2",
Email = "Test_2@yourStore.com",
Avatar="/images/Avatar/寅虎fufu.png",
PasswordSalt=saltKey,
Password = _encryptionService.CreatePasswordHash("1", saltKey,CustomerServicesDefaults.DefaultHashedPasswordFormat),
IsSystemAccount= true,
Active = true,
Deleted = false,
CreatedDate = DateTime.Now,
},
new Customer
{
Username = "Test_3",
Email = "Test_3@yourStore.com",
Avatar="/images/Avatar/卯兔fufu.png",
PasswordSalt=saltKey,
Password = _encryptionService.CreatePasswordHash("1", saltKey,CustomerServicesDefaults.DefaultHashedPasswordFormat),
IsSystemAccount= true,
Active = true,
Deleted = false,
CreatedDate = DateTime.Now,
},
new Customer
{
Username = "Test_4",
Email = "Test_4@yourStore.com",
Avatar="/images/Avatar/辰龙fufu.png",
PasswordSalt=saltKey,
Password = _encryptionService.CreatePasswordHash("1", saltKey,CustomerServicesDefaults.DefaultHashedPasswordFormat),
IsSystemAccount= true,
Active = true,
Deleted = false,
CreatedDate = DateTime.Now,
},
new Customer
{
Username = "Test_5",
Email = "Test_5@yourStore.com",
Avatar="/images/Avatar/巳蛇fufu.png",
PasswordSalt=saltKey,
Password = _encryptionService.CreatePasswordHash("1", saltKey,CustomerServicesDefaults.DefaultHashedPasswordFormat),
IsSystemAccount= true,
Active = true,
Deleted = false,
CreatedDate = DateTime.Now,
},
new Customer
{
Username = "Test_6",
Email = "Test_6@yourStore.com",
Avatar="/images/Avatar/1.jpg",
PasswordSalt=saltKey,
Password = _encryptionService.CreatePasswordHash("1", saltKey,CustomerServicesDefaults.DefaultHashedPasswordFormat),
IsSystemAccount= true,
Active = true,
Deleted = false,
CreatedDate = DateTime.Now,
},
};文章来源:https://www.toymoban.com/news/detail-469267.html
对以上功能更为具体实现和注释见230602_022ShopRazor(用户密码哈希加密操服务的定义实现)。文章来源地址https://www.toymoban.com/news/detail-469267.html
到了这里,关于第22章 用户密码哈希加密操服务的定义实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!