| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Security.Cryptography;
- using System.Text;
- using System.Threading.Tasks;
- namespace CallCenter.Utility
- {
- public class SaltAndHashHelper
- {
- /// <summary>
- /// 对用户输入的密码进行加密
- /// </summary>
- /// <param name="passWord">输入的明文密码</param>
- /// <param name="salt">加密过程中产生的盐值</param>
- /// <returns>加密后的密码值</returns>
- public static string GetHashSha256AndSalt(string passWord, out string salt)
- {
- //首先生成随机加密盐
- RandomNumberGenerator saltNumber = new RNGCryptoServiceProvider();
- byte[] s = new byte[256];
- saltNumber.GetBytes(s);
- salt = Convert.ToBase64String(s); //将盐值转化为字符串
- return GetHashSha256(passWord, salt);//针对盐值和密码一起应用hash加密函数,得到明文密码
- }
- /// <summary>
- /// 对用户输入的密码采用指定的盐值进行加密
- /// </summary>
- /// <param name="passWord">输入的明文密码</param>
- /// <param name="salt">指定的盐值</param>
- /// <returns>加密后的密码值</returns>
- public static string GetHashSha256(string passWord, string salt)
- {
- byte[] bytes = Encoding.Unicode.GetBytes(salt + passWord); //将盐值和密码进行组合
- SHA256Managed hashstring = new SHA256Managed();
- byte[] hash = hashstring.ComputeHash(bytes);//针对组合后的数据应用hash函数
- string hashString = string.Empty;
- foreach (byte x in hash)
- {
- hashString += String.Format("{0:x2}", x);
- }
- return hashString; //得到加密后的密文字符串
- }
- }
- }
|