详解对密码执行散列和 salt 运算方法

2016-01-29 13:45 3 1 收藏

详解对密码执行散列和 salt 运算方法,详解对密码执行散列和 salt 运算方法

【 tulaoshi.com - ASP.NET 】

  大家对密码执行散列和Salt运算一定不陌生。两个Visual Studio企业版示例都是用的这个方法来加密这个方法的。结合示例代码,我总结了一个包含对密码进行加密,比较等静态方法的类。
  使用说明:先用HashAndSalt方法对密码进行加密,然后存储到数据库中。 在用户登录时用ComparePasswords方法在对用户输入的密码和用户注册时存储在数据库中的密码进行比较,判断用户输入的密码是否正确。

 

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

Credentials.cs

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
 
namespace BookStore.Common
{
       /// <summary
       /// Credentials 的摘要说明。
       /// 原理:
       /// 对密码执行散列运算
       /// 若要避免以明文形式存储密码,一种常见的安全做法是对密码执行散列运算。如以下代码所示,使用 System.Security.Cryptography 命名空间(它实现 160 位 SHA-1 标准)对密码进行散列运算。有关更多信息,请参见 SHA1 成员。
       /// 对散列执行 Salt 运算
       /// 虽然对密码执行散列运算的一个好的开端,但若要增加免受潜在攻击的安全性,则可以对密码散列执行 Salt 运算。Salt 就是在已执行散列运算的密码中插入的一个随机数字。这一策略有助于阻止潜在的攻击者利用预先计算的字典攻击。字典攻击是攻击者使用密钥的所有可能组合来破解密码的攻击。当您使用 Salt 值使散列运算进一步随机化后,攻击者将需要为每个 Salt 值创建一个字典,这将使攻击变得非常复杂且成本极高。
       /// Salt 值随散列存储在一起,并且未经过加密。所存储的 Salt 值可以在随后用于密码验证。
       /// </summary
       public class Credentials
       {
              private static string key = "!48%0d-F=cj,s&2";  //密钥(增加密码复杂度,好像比较多余)
              private const int saltLength = 4;                         //定义salt值的长度
 
              /// <summary
              /// 对密码进行Hash 和 Salt
              /// </summary
              /// <param name="Password"用户输入的密码</param
              /// <returns</returns
              public static byte[] HashAndSalt(string Password)
              {
                     return CreateDbPassword(HashPassword(Password));
              }
 
              /// <summary
              /// 对用户输入的密码加上密钥key后进行SHA1散列
              /// </summary
              /// <param name="Password"用户输入的密码</param
              /// <returns返回 160 位 SHA-1 散列后的的byte[](160位对应20个字节)</returns
  

来源:https://www.tulaoshi.com/n/20160129/1491382.html

延伸阅读
标签: Web开发
代码如下: html xmlns="http://www.w3.org/1999/xhtml" head runat="server" title/title script src="script/jquery-1.3.2.js" type="text/jscript"/script script type="text/jscript" function show(num) { var params = '{str:"'+ num+'"}'; $.ajax({ type: "POST", url: "default.aspx/aa", data: params, dataType: "text"...
标签: 电脑入门
一、SolarisROOT密码遗忘的处理方法 1.如果还能用普通用户登陆的话,%df /etc,确定包含/etc目录分区的设备名。 %df /etc / /dev/dsk/c0t0d0s0…… 此例中是c0t0d0s0,如果你的根目录分区设备不一样的话,替换一下就可以。 2.把系统盘插入cdrom中。 3.出现提示符后,使用sync命令刷新文件系统。 4.按下stop+A。 ...
标签: 化妆
生活中美眉们化妆喜欢用散粉定妆呢还是用粉饼定妆?散粉有什么作用,分享给大家。 散粉有什么作用 散粉和粉饼哪个好用 1、定妆 散粉既然又称为定妆粉,那么它带有的定妆作用自然就有了,在上彩妆前扫上散粉后,会让你整体彩妆更为持久,彩妆不会容易脱落、移位! 2、修饰 有些新手上彩妆时,很容易就会出现脸部色...
路由优化大师路由器各种账号和密码详解   路由器是多用户共享上网的必备设备,也是WiFi信号的主要来源 目前,家庭路由器都带有WiFi功能,因此,很多用户分不清什么是WiFi密码什么是管理密码,现在详细介绍一下路由器的各种账号和密码 1、路由器管理员账号和密码 路由器和Win7操作系统一样,有一个管理员账号和密...
标签: 粉饼 散粉
1、形态不同 二者的形态不一样,粉饼是呈压缩固体状态,多呈圆形或者方形,散粉则是细腻的粉末状。 2、功效不同 二者的功效不一样,粉饼作为底妆的一种,遮瑕力会比较强一些,通常可以湿用做粉底,或者用来补妆。而散粉则组要是定妆的效果; 3、使用方法不同 二者的使用方法不同,粉饼通常用所带的海绵扑,运用按...

经验教程

470

收藏

10
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部