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

news/2025/2/22 15:44:04/

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-224SHA-256SHA-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-224SHA-256SHA-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,

                },

            };

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


http://www.ppmy.cn/news/172140.html

相关文章

微星主板jsp1接线图_微星主板JSP11接口可制作双BIOS

我的主板是微星的P35-EFINITY ,买来的时候BIOS的版为1.2的,因从待机唤醒后CPU风扇全速运转就刷新了BIOS(台湾网站1.7版),风扇全速是解决了,可是我的E7200变为单核了,上网看了许多贴子,听说要加一个/B参数,就重新刷新,结果没有成功,把BIOS的引导区刷坏了,当然主板是反复重起,进不…

微星小飞机怎么调风扇转速?

很多用户在选择显卡超频软件时都会首选微星小飞机&#xff0c;那使用微星小飞机要怎么调整风扇转速呢&#xff1f;下面小编就给大家带来了微星小飞机设置风扇转速的教程&#xff0c;简单几步即可完成。 微星小飞机风扇转速设置 微星小飞机必须是微星显卡才能设置风扇手动的&…

微星RTX 4090和RTX 4080 SUPRIM参数对比评测

外观设计 打开包装&#xff0c;两张RTX 40系列的超龙显卡就揭开了神秘的面纱&#xff0c;这一代的超龙依然质感拉满&#xff0c;奢华的金属拉丝外壳棱角分明&#xff0c;厚重的体积内容十分丰富&#xff0c;枪灰色的卡身和银色的配色点缀既低调又不失奢华&#xff0c;隐隐体现出…

微星性能测试软件,微星MSI Kombustor

微星MSI Kombustor是一款功能强大的显卡超频软件。这款软件主要是测试显卡的OpenGL运算能力&#xff0c;还可以测试稳定性。设置自己想要的测试参数&#xff0c;准确的执行操作。如果觉得不错的朋友可以来本站下载试试。 功能特点 超频工具 探索和超过的限制你的显卡可能听起来…

微星MPG Z490 GAMING PLUS i7-10700K电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。 硬件型号驱动情况 主板微星 MPG Z490 GAMING PLUS (MS-7C75)&#xff08;LPC Controller Z490芯片组&#xff09; 处理器英特尔 Core i7-10700K 3.80GHz 八核已驱动 内存 32 GB ( 金士顿 DDR4 3600MHz 8GB x 4 )已驱动 硬…

微星GP63 (006CN) 拆机加固态

加装固态 硬件条件 这款是2018年8月份的新机子&#xff0c;除了厂家的一张固态卡&#xff0c;和7200转的机械硬盘之外&#xff0c; 还可以再加装一张SSD固态卡&#xff08;仅支持PCIe协议&#xff09; 固态选择 三星970 EVO 250G NVMe M.2 固态硬盘&#xff08;亲测有效兼容&…

ssd m.2接口详解

ssd有两种接口,一种是sata&#xff0c;一种是m.2。这里主要深入讲解一下m.2接口的ssd. 1.ssd 尺寸与规格 我们在买ssd的时候&#xff0c;商家都会说什么ssd是2280还是2242规格的,这里的规格实际上就是代表的ssd的大小 M.2模组的尺寸目前有11种&#xff0c;用Type xxyy的方式表…

技嘉B560M VCCIO2电压设计缺陷

涉及产品型号&#xff1a; 技嘉B560M POWER技嘉B560M D2V技嘉B560M GAMING HD技嘉B560M H 触发条件&#xff1a; 11代CPU&#xff08;概率上11400>11600>11700&#xff09;&#xff0c;10代处理器不…