当前位置:  开发笔记 > 编程语言 > 正文

简单的密码加密

如何解决《简单的密码加密》经验,为你挑选了5个好方法。

什么是用于保护数据库中密码的简单加密方案?我不一定需要任何超安全的东西,也不需要任何快速闪电的东西,但那些东西会很好.首先,我只想要一些易于实现而不会非常缓慢或不安全的东西.



1> Neall..:

正如mk所说,SHA1或MD5是标准的,还有SHA2.

您想要的更通常称为加密哈希函数.加密哈希被设计为单向(给定结果哈希,您不应该能够导出原始输入).此外,具有相同散列的两个任意字符串(称为散列冲突)的可能性应该是低的(理想地是1 /散列值的数量).

不幸的是,仅仅因为你的密码是经过哈希处理的,并不能让你免于努力保持哈希版本的安全.很多人会使用容易受到离线暴力攻击的弱密码.

编辑 - 几个人也已经指出了使用盐的重要性.salt是一个常量值,在使用哈希函数之前,它与输入混合在一起.拥有独特的盐可防止离线攻击者使用预先计算的常用密码表(彩虹表)来更快地强制您的密码.


对于OP:当使用单向散列(如MD5或SHA1/2)时,您无法"解密"它.也就是说,您将无法从哈希字符串中恢复原始明文密码.要在用户登录时测试密码,请对输入的密码应用相同的哈希值并比较两个哈希值.

2> mk...:

MD5或SHA1 +盐.



3> Keith..:

如果你使用MD5或SHA1使用盐来避免彩虹表黑客攻击.

在C#中这很容易:

MD5CryptoServiceProvider hasher = new MD5CryptoServiceProvider();
string addSalt = string.Concat( "ummm salty ", password );
byte[] hash = hasher.ComputeHash( Encoding.Unicode.GetBytes( addSalt ) );



4> graham.reeds..:

容易:BCrypt.



5> Greg Hewgill..:

Jeff's 你可能错误地存储密码文章是关于这个主题的优秀阅读.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有