博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用户密码安全存储-解决方案
阅读量:6654 次
发布时间:2019-06-25

本文共 1756 字,大约阅读时间需要 5 分钟。

解决方案:采用MD5 不可逆哈希算法,对用户密码运算后再加随机码的加密方式进行数据库密码存储,避免类似CSDN、天涯网等数据库泄密事件。切忌数据库密码明文存储!!!

1、定义获取Md5字符串的方法

1 ///  2         /// 根据字符串获取MD5值 3         ///  4         /// 要转换的字符串 5         /// 
MD5字符串
6 public static string GetMD5(string str) 7 { 8 byte[] bytes = System.Text.Encoding.Default.GetBytes(str); 9 MD5 md5 = MD5.Create();10 byte[] resultBytes = md5.ComputeHash(bytes);11 12 string md5Result = "";13 for (int i = 0; i < resultBytes.Length; i++)14 {15 md5Result += resultBytes[i].ToString("X2");16 }17 return md5Result;18 }

2、定义加密方法

1  ///  2         /// 获取加密后的密码,用于数据库中存放 3         ///  4         /// 用户输入的密码 5         /// 
加密后的密码
6 public static string GetEncMD5(string txtPwd) 7 { 8 string strRandom; 9 10 //获取3位随机字母11 Random r = new Random();12 strRandom = ((char)(r.Next(65, 65 + 26))).ToString() + ((char)(r.Next(65, 65 + 26))).ToString() + ((char)(r.Next(65, 65 + 26))).ToString();13 14 return strRandom + GetMD5(strRandom + txtPwd);//设定加密方式,也可以在此进行多次Md5加强密码安全度15 }

3、定义验证方法

1 ///  2         /// 判断密码是否正确 3         ///  4         /// 数据库中存放的密码 5         /// 用户输入的密码 6         /// 
正确返回true
7 public static bool PwdIsRight(string sqlPwd, string txtPwd) 8 { 9 string str = sqlPwd.Substring(0, 3);10 string tmp = str + GetMD5(str + txtPwd);11 return sqlPwd == tmp ? true : false;12 }

通过这种加密方式,数据库中存放的用户密码就一组大于32位的字符串,并确保了即使用户密码相同但数据库存入的密码字符串也是不相同的,有效解决了反Md5穷举法。

转载于:https://www.cnblogs.com/rdst/archive/2012/08/11/other.html

你可能感兴趣的文章
SQL Server 2012 AlwaysOn高可用配置之五:配置仲裁
查看>>
Windows Server 2012 RMS for Exchange Server 2013
查看>>
常用的Oracle数据库语句 (待更新完毕)
查看>>
恢复Hyper-V虚拟机丢失的数据文件过程
查看>>
解决ssh时候Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
查看>>
技术沙龙|区块链商用落地的策略与技术坑-区块链扩展和Fabric商用(杭州)
查看>>
C++ 之初体验
查看>>
常用命令
查看>>
我的友情链接
查看>>
自己做的一个肤色检测模型
查看>>
#51CTO学院四周年#砥砺前行的日子
查看>>
file_fdw创建外部表及其与普通表的结合
查看>>
oracle bug? ORA-07445 ,pl/sql for in()
查看>>
11.14-11.18周总结(二)
查看>>
一些总结
查看>>
软件测试工程师必备技能,纯干货分享!
查看>>
国外一个牛人写好的VIM配置方案spf13
查看>>
Python 单向循环链表
查看>>
Redis 客户端安装与远程连接图解
查看>>
BZOJ3328: PYXFIB(单位根反演?)
查看>>