文档章节

关于加密的一些笔记

6pker
 6pker
发布于 2015/02/05 11:22
字数 679
阅读 144
收藏 10
生成一个随机数,我们称之为salt,
然后在数据库中记录salt和h=hash(pwd + salt),
查询的时候,得到用户的口令p,
后从数据库中查出salt,计算hash(p+salt),看是不是等于h,
等于就是对的,不等于就是不对的。


保护密码最好的的方式就是使用带盐的密码hash(salted password hashing).
只有加密hash函数(cryptographic hash functions)可以用来进行密码的hash。
这样的函数有SHA256, SHA512, RipeMD, WHIRLPOOL等。


根据一些经验得出来的规则就是盐的大小要跟hash函数的输出一致。比如,SHA256的输出是256bits(32bytes),盐的长度也应该是32个字节的随机数据。
一个使用加盐MD5的密码hash在实际使用中跟使用其他算法比如SHA256一样安全。不过如果可以的话,使用更安全的hash函数,比如SHA256, SHA512, RipeMD, WHIRLPOOL等是更好的选择。
盐要使用密码学上可靠安全的伪随机数生成器(Cryptographically Secure Pseudo-Random Number Generator (CSPRNG))来产生。
java.security.SecureRandom


每一个用户,每一个密码都要使用不同的盐。
用户每次创建账户或者修改密码都要使用一个新的随机盐。
永远不要重复使用盐。
盐的长度要足够,一个经验规则就是盐的至少要跟hash函数输出的长度一致。
盐应该跟hash一起存储在用户信息表里。


一个不错的学习web应用漏洞的资源是OWASP。除非你理解了OWASP Top Ten Vulnerability List,否则不要去写关系到敏感数据的程序。
经过充分测试的加密hash函数,比如SHA256, SHA512, RipeMD, WHIRLPOOL, SHA3等
不要使用 过时的hash函数,比如MD5,SHA1.任何自己设计的算法。


MD5 提供了最基本的安全 Hash 生成,使用时应为其添加 slat 来进一步加强它的安全性。
MD5 生成128位的 Hash。为了使它更安全,应该使用 SHA 算法生成 160-bit 或 512-bit 的长 Hash,其中 512-bit 是最强的。
虽然使用 SHA Hash 密码也能被当今快速的硬件破解,如要避免这一点,你需要的算法是能让暴力攻击尽可能的变慢且使影响减至最低。
这时候你可以使用 PBKDF2, BCrypt 或 SCrypt 算法。


PBKDF2(Password-Based Key Derivation Function)
美国政府机构已经将这个方法标准化,并且用于一些政府和军方的系统。 这个方案最大的优点是标准化,实现容易同时采用了久经考验的SHA算法。


DigestUtils.md5Hex(userName+DigestUtils.md5Hex(password))

© 著作权归作者所有

共有 人打赏支持
6pker
粉丝 54
博文 97
码字总数 59252
作品 0
浦东
程序员
私信 提问
Turtl:Evernote 的开源替代品

如果你正在寻找一个 Evernote 和 Google Keep 的替代品,那么 Turtl 是一个可靠的记笔记工具。 我认识的每个人都会记笔记,许多人使用在线笔记应用,如 Evernote、Simplenote 或 Google Kee...

作者: Scott Nesbitt
01/19
0
0
我的印象笔记使用手册(2018版)

2017年,写过一篇类似文章。 谈及的内容以工具本身为主,通篇技巧,缺乏底层逻辑的思考。 这一年里,随着使用场景的扩大化,对这个不足有了一些新的理解。 基于此,形成此文。 内容比较干,但...

曹将PPT
2018/10/12
0
0
Yoda:您的 Linux 系统命令行个人助理

不久前,我们介绍了一个名为 “Betty” 的命令行虚拟助手。今天,我偶然发现了一个类似的实用程序,叫做 “Yoda”。Yoda 是一个命令行个人助理,可以帮助您在 Linux 中完成一些琐碎的任务。它...

作者: Sk
2018/04/29
0
0
7 款印象笔记开源替代

印象笔记自 08年正式发布至今,已经拥有数以千万计的普通用户,百万计付费用户。不得不承认,印象笔记确实很强大,给众多用户带来诸多便利。 对于广大热爱开源的程序员来说,遗憾的是,它是闭...

催呀催呀
2016/08/05
11.1K
33
了解加密学:从数学到物理(一)

了解加密学:从数学到物理(一) 2018-09-25 15:34编辑: 游星啊分类:区块链来源:蓝狐笔记 密码区块链 招聘信息: iOS开发 iOS开发 iOS开发 app开发上架H5技术 app开发技术 图像处理及模式...

游星啊
2018/09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(11.9)hive操作基础知识

上一篇博客分享了hive的简介和初体验,本节博主将继续分享一些hive的操作的基础知识。 DDL操作 (1)创建表 #建表语法CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name ...

em_aaron
今天
2
0
OSChina 周四乱弹 —— 我家猫真会后空翻

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听这个# 我艇牛逼,百听不厌,太好听辣 分享 Led Zeppelin 的歌曲《Stairway To Heaven》 《Stairway To Heaven》- Led Z...

小小编辑
今天
2
0
node调用dll

先安装python2.7 安装node-gyp cnpm install node-gyp -g 新建一个Electron-vue项目(案例用Electron-vue) vue init simulatedgreg/electron-vue my-project 安装electron-rebuild cnpm ins......

Chason-洪
今天
3
0
scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
3
0
通俗易懂解释网络工程中的技术,如STP,HSRP等

导读 在面试时,比如被问到HSRP的主备切换时间时多久,STP几个状态的停留时间,自己知道有这些东西,但在工作中不会经常用到,就老是记不住,觉得可能还是自己基础不够牢固,知识掌握不够全面...

问题终结者
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部