每次新建账号密码的时候都需要获取一下新的盐码,之后用使用MD5为用户密码加密

        /// <summary>
/// 获取新的密码盐码
/// </summary>
/// <returns></returns>
public static string GetPasswordSalt()
{
var salt = new byte[/];
using (var saltnum = RandomNumberGenerator.Create())
{
saltnum.GetBytes(salt);
}
return Convert.ToBase64String(salt);
}
/// <summary>
/// 获取根据盐码加密的密码
/// </summary>
/// <param name="password">原密码</param>
/// <param name="salt">盐码</param>
/// <returns></returns>
public static string GenEncodingPassword(string password
,string salt)
{
MD5 md5 = MD5.Create();
byte[] bs = Encoding.UTF8.GetBytes(password+salt);
byte[] hs = md5.ComputeHash(bs);
StringBuilder strb = new StringBuilder();
foreach (byte item in hs)
{
strb.Append(item.ToString("x2"));
}
return strb.ToString();
}

注意:由于MD5是不可逆的,所以加密之后就无法解密,在每次登录的时候,都需要查询一下账号对应的盐码是多少,之后密码盐码加密,再与数据库中保存的密码来对比(数据库保存的密码是盐码加密之后的)。如果比对结果一致,则可以判定登陆成功!所以要在数据库中添加一个盐码的字段。

C# 密码盐码加密的更多相关文章

  1. shiro密码的比对,密码的MD5加密,MD5盐值加密,多个Relme

    有具体问题的可以参考之前的关于shiro的博文,关于shiro的博文均是一次工程的内容 密码的比对   通过AuthenticatingRealm的CredentialsMatcher方法 密码的加密 ...

  2. MD5加密 及获得密码盐

    MD5加密 及获得密码盐 using System; using System.Collections.Generic; using System.Configuration; using Syste ...

  3. 数据库存储安全之(MD5+盐)加密

    一般系统数据库密码加密方式: MD5后存入数据库 SHA1 Hash后存入数据库 缺点:黑客可以通过密码暴力破解获取密码信息,具体做法是将常用密码进行Hash后做成一个字典, 破解的时候,只需要查字典 ...

  4. centos单用户模式:修改ROOT密码和grub加密

    centos单用户模式:修改ROOT密码和grub加密 CentOSLinux网络应用配置管理应用服务器  Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 ...

  5. Spring Security中的MD5盐值加密

    在 spring Security 文档中有这么一句话: "盐值的原理非常简单,就是先把密码和盐值指定的内容合并在一起,再使用md5对合并后的内容进行演算,这样一来,就算密码是一个很常见的字 ...

  6. shiro盐值加密并验证

    在数据表中存的密码不应该是123456,而应该是123456加密之后的字符串,而且还要求这个加密算法是不可逆的,即由加密后的字符串不能反推回来原来的密码,如果能反推回来那这个加密是没有意义的.著名的加 ...

  7. .NetCore 登录(密码盐+随机数)

    一.理论部分 1.为什么要给密码加盐 我们在数据库中存入的密码一般不会是明文,都要通加MD5加密后存入,但是有些简单的密码加密后存入数据库也不安全,所有我们采用密码+盐再进行MD5加密存入数据库中. ...

  8. SpringBoot整合shiro-MD5盐值加密

    为什么要进行密码加密? 在我们的日常生活中,许多人有着在不同网站上使用相同密码的坏习惯(包括我也是qaq),假如应用程序或服务器出现漏洞,数据被窃取,用户的明文密码直接被暴露给黑客.显然后果将不堪设想 ...

  9. Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试

    摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就 ...

随机推荐

  1. 12集合(2)-----Set

    一.总体分类 Collection(包括方法add,remove,contains,clear,size) List(接口) LinkedList ArrayList Vector---Stack 2 ...

  2. hdu 2824 欧拉函数 O(nlogn) 和O(n)

    裸题 O(nlogn): #include <cstdio> #include <iostream> #include <algorithm> using name ...

  3. Ubuntu使用命令行打印文件

    Ubuntu使用命令行打印文件 正文 环境: Ubuntu 16.04.3 LTS HP Deskjet InkAdvantage 4648 准备步骤 安装Common UNIX Printing S ...

  4. Python之PIL库的运用、GIF处理h

    一.PIL库简介 PIL(Python Image Library)库是Python语言的第三方库,它支持图像存储.显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放.剪裁.折叠以及像图片添 ...

  5. poj 1113 凸包

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  6. 闲记 单元格与单元格之间的边 ///字体属性都是font开头,除了颜色属性 ///文本属性都是text开的,除了设置行高。

    这两天一直在做网页没有什么太大的问题,期间也考了一场试,对答案的时候老师讲了一些小知识,因此来记录一下. 单元格与单元格之间的边距(cellspaling) list-type-image可以使用图像 ...

  7. SOFARPC —— Generic Service (泛化调用) 解析

    今晚心情无比激动,多云转晴!原因在于弄懂些 Generic Service 实现原理,很有成就感. 各位看官莫笑,今晚,小小的收获,也是非常满足的.下面进入正题! 一.前言 普遍RPC在客户端需要提供 ...

  8. 控制使用jquery load()方法载入新页面中的元素

    最近在项目中用到jquery的load()方法来加载页面,首先简单说一下load()方法. load(url,data,callback);该方法接收三个参数,第一个是载入的页面地址,第二个是要传到服 ...

  9. javascript 操作节点的属性

    使用层次关系访问节点 parentNode:返回节点的父节点 childNodes:返回子节点集合,childNodes[i] firstChild:返回节点的第一个子节点,最普遍的用法是访问该元素的 ...

  10. test markdown to html

    软件版本 PHP 5.5.25 Yaf 2.3.2 域名 正式域名 gm.mgame.qihoo.net demo域名 demo.gm.mgame.qihoo.net 配置 配置目录 后台配置 con ...