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

这篇具有很好参考价值的文章主要介绍了第22章 用户密码哈希加密操服务的定义实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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(用户密码哈希加密操服务的定义实现)。文章来源地址https://www.toymoban.com/news/detail-469267.html

到了这里,关于第22章 用户密码哈希加密操服务的定义实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot项目配置文件数据库用户名密码加密

    在使用SpringBoot开发过程中,会将一些敏感信息配置到SpringBoot项目的配置文件中( 不考虑使用配置中心的情况 ),例如数据库的用户名和密码、Redis的密码等。为了保证敏感信息的安全,我们需要将此类数据进行加密配置。 目前通用的做法是使用 jasypt 对数据库用户名或者密码

    2024年02月10日
    浏览(44)
  • dcat-admin自定义登录密码hash加密规则

    config/admin.php

    2024年02月16日
    浏览(33)
  • 共享文件夹/盘加密方法:(指定电脑或者拥有用户名和密码才能访问)

    1、选择需要共享的文件夹/盘,右键选择“属性”。  2、在“共享”一栏中点击“网络和共享中心”。 3、点开“所有网络”的项目,前面几项全部选择启用,最后一栏选择“有密码保护的共享”,并保存更改。   4、继续回到共享这一栏,点击“高级共享(D)...”,点击左

    2024年02月02日
    浏览(60)
  • Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密

    学习视频:【编程不良人】2021年SpringBoot最新最全教程 Jasypt 全称是Java Simplified Encryption,是一个开源项目。 Jasypt与Spring Boot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行时解密这些信息。 可以使用 jasypt-spring-boot-starter 这个依赖项。从而实现属性源

    2024年02月04日
    浏览(66)
  • C#实现SHA256哈希加密算法(含代码实现)

    C#实现SHA256哈希加密算法(含代码实现) 在现代计算机技术中,数据安全是一个非常重要的话题。加密算法就是用来保护数据安全的一种技术。其中,哈希加密算法是一种常用的加密方式。本篇文章将介绍如何使用 C# 编程语言实现 SHA256 哈希加密算法,并附上完整的源码。 SHA

    2024年02月08日
    浏览(82)
  • win11 搭建Apache webdav 设置用户名密码 加密授权访问以及多个不同目录访问

    Apache webdav 的搭建应该比较简单,但是搭建后还遇到了一些问题,也就是设置了访问用户名密码,咋就不生效呢,苦苦思索两日,终于发现了问题,本文就是分两个方面来编写 官网下载: https://www.apachehaus.com/cgi-bin/download.plx 打开文件 “/conf/httpd.conf“, 取消加载和包含语句的

    2024年01月21日
    浏览(60)
  • Qt+QtWebApp开发笔记(四):http服务器使用Session和Cookie实现用户密码登录和注销功能

      前面实现了基础的跳转,那么动态交互中登录是常用功能。   本篇实现一个动态交互的简单登录和注销功能,在Qt中使用Session和Cookie技术。        链接:https://pan.baidu.com/s/1nkmsHgr-11Khe9k6Ntyf_g?pwd=1234     Web应用程序通常处理用户输入。将开发一个登录表单,看看

    2024年02月06日
    浏览(86)
  • 手把手教你实现:Android注册登录功能,通过本地服务器保存用户账号密码到数据库

    代码我放到文章最后面了 首先你需要电脑一台:如果没有电脑将会很难办呢 -----沃兹基硕德 下载并安装以下开发工具 Android Studio 官网最新版 用来开发 安卓App IntelliJ IDEA 官网最新版 用来开发 后端 ,处理安卓APP的请求 Navicat for MySql 官网最新版 数据库可视化工具,用来查看数

    2024年01月16日
    浏览(49)
  • Portainer自定义设置默认的用户名密码

    Portainer是一款轻量级的Docker管理Web界面,它可以让用户方便地管理和部署Docker容器,管理Docker Swarm集群等 用户可以通过Portainer轻松完成基于Docker的应用部署、镜像管理、容器监控、日志查看、用户权限管理等一系列任务 透过Portainer的用户界面,用户可以轻松地创建、启动、

    2024年02月15日
    浏览(42)
  • 系列三、Spring Security中自定义用户名/密码

    1.1.1、配置文件中配置 1.1.2、定义基于内存的用户 1.1.3、基于UserDetailService接口定义用户 概述:         Spring Security支持多种数据源,例如内存、数据库、LDAP等,这些不同来源的数据被共同封装成了UserDetailService接口,换句话说任何实现了UserDetailService接口的对象都可以作为

    2024年01月19日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包