第22章 用户密码哈希加密操服务的定义实现

1 重构Services.Customers.CustomerServiceDefaults

 #region 用户密码加密相关配置设定

        ///

        /// 【哈希密钥长度】

        ///

        /// 摘要:

        ///     设定哈希(Hash)加密方式所需密钥字符串长度的整型值。

        ///  说明:

        ///     当使用哈希方式对用户的密进行加密操作进行加密操作时,设定密钥字符串的长度值为:5个字符。

        ///

        ///

        public static int PasswordSaltKeySize => 5;

        ///

        /// 【哈希加密默认编码格式】

        ///

        /// 摘要:

        ///     设定哈希加密算法名称的字符串常量(默认:以最高安全性及其最大长度的"SHA512"加密算法,对用户的密码进行加密操作。)

        ///

        ///

        public static string DefaultHashedPasswordFormat => "SHA512";

        #endregion

2 Services.Security.IEncryptionService

namespace Services.Security

{

    ///

    /// 【加密服务--接口】

    ///

    /// 摘要:

    ///    继承于该接口的具体实现类中的方法成员实现了哈希加密操作方式,为用户输入的密码进行加密提供相应的方法支撑。

    ///

    ///

    public interface IEncryptionService

    {

        /// name="size">一个指定字节数组实例长度的整型值。

        ///

        /// 【生成密钥】

        ///

        /// 摘要:

        ///     生成哈希(Hash)加密方式所需的密钥字符串(默认:5个字符的字符串),为哈希加/解密操作提供数据支撑。

        ///

        /// 返回:

        ///     哈希(Hash)加密方式所需的密钥字符串(默认:5个字符的字符串)

        ///

        ///

        ///

        string CreateSaltKey(int size);

        /// name="password">一个指定的需要被加密码(明码)字符串。

        /// name="saltKey">一只用于哈希加密方式的密钥字符串。

        /// name="passwordFormat">1个指定的哈希加密算法的名称(SHA-224SHA-256SHA-384,和 SHA-512)

        ///

        /// 【哈希方式生成密码】

        ///

        /// 摘要:

        ///     通对哈希加密算法方式对指定的密码字符进行加密操作,最后返回一个加密后的密码字符串(该加密字符串定长,长度由算法名称决定)

        ///

        ///

        /// 返回:

        ///     一个经过哈希加密算法加密后的密码字符串(该加密字符串定长,长度由算法名称决定)

        ///

        ///

        string CreatePasswordHash(string password, string saltKey, string passwordFormat);

    }

}

3 Services.Security.EncryptionService

using System.Security.Cryptography;

using System.Text;

using Core;

namespace Services.Security

{

    ///

    /// 【加密服务--类】

    ///

    /// 摘要:

    ///    该类中的方法成员实现了哈希加密操作方式,为用户输入的密码进行加密提供相应的方法支撑。

    ///

    ///

    public class EncryptionService : IEncryptionService

    {

        /// name="size">一个指定字节数组实例长度的整型值。

        ///

        /// 【生成密钥】

        ///

        /// 摘要:

        ///     生成哈希(Hash)加密方式所需的密钥字符串(默认:5个字符的字符串),为哈希加/解密操作提供数据支撑。

        ///

        /// 返回:

        ///     哈希(Hash)加密方式所需的密钥字符串(默认:5个字符的字符串)

        ///

        ///

        ///

        public virtual string CreateSaltKey(int size)

        {

            //获取高质量的随机数。

            using var provider = RandomNumberGenerator.Create();

            var buff = new byte[size];

            provider.GetBytes(buff);

            //把存储字节数组实例中的密钥,转换为字符串形式的密钥。

            return Convert.ToBase64String(buff);

        }

        /// name="password">一个指定的需要被加密码(明码)字符串。

        /// name="saltKey">一只用于哈希加密方式的密钥字符串。

        /// name="passwordFormat">1个指定的哈希加密算法的名称(SHA-224SHA-256SHA-384,和 SHA-512)

        ///

        /// 【哈希方式生成密码】

        ///

        /// 摘要:

        ///     通对哈希加密算法方式对指定的密码字符进行加密操作,最后返回一个加密后的密码字符串(该加密字符串定长,长度由算法名称决定)

        ///

        ///

        /// 返回:

        ///     一个经过哈希加密算法加密后的密码字符串(该加密字符串定长,长度由算法名称决定)

        ///

        ///

        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 = "[email protected]",

                    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 = "[email protected]",

                    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 = "[email protected]",

                    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 = "[email protected]",

                    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 = "[email protected]",

                    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 = "[email protected]",

                    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 = "[email protected]",

                    Avatar="/images/Avatar/1.jpg",

                    PasswordSalt=saltKey,

                    Password =  _encryptionService.CreatePasswordHash("1", saltKey,CustomerServicesDefaults.DefaultHashedPasswordFormat),

                    IsSystemAccount= true,

                    Active = true,

                    Deleted = false,

                    CreatedDate = DateTime.Now,

                },

            };

    对以上功能更为具体实现和注释见230602_022ShopRazor(用户密码哈希加密操服务的定义实现)。

你可能感兴趣的:(RazorUniApp,.Net7,MVC,哈希加密)