文档章节

关于加密的一些笔记

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
粉丝 51
博文 98
码字总数 59361
作品 0
浦东
程序员
Yoda:您的 Linux 系统命令行个人助理

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

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

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

催呀催呀
2016/08/05
11.1K
33
云笔记本--NotePad.Live

Notepad.live是一个最简洁的云笔记本,您可以使用任意的域名后缀来自定义您的笔记地址,支持加密和只读地址分享。 比如直接访问 http://notepad.live/zidingyi 即可建立一个自定义地址的云笔...

JiaFeiX
2016/03/20
1K
0
ElGamal加密、签名算法笔记

注意:只是个人理解,可能有不正确的地方 ElGamal加密算法是一种非对称加密算法,基于Diffie-Hellman密钥交换算法,由Taher Elgamal在1985年提出。 ElGamal加密算法可以应用在任意一个循环群...

NealFeng
2014/10/14
0
2
CoAP协议学习笔记 2.2 阿里云IoT平台接入 基础版CoAP协议接入测试

这篇笔记涉及 阿里云CoAP接入,CoAP协议学习笔记可点此查看。 1 前言 上篇笔记完成了云端产品功能定义,并生成了相应的设备证书。 这篇笔记将会跟着教程走,使用 Ubuntu 对 SDK 编译验证,先...

iotisan
05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

iOS开发用到的图片尺寸汇总

启动图 型号 竖屏 横屏 iPhone SE 640px × 1136px 1136px × 640px iPhone 6s 750px × 1334px 1334px × 750px iPhone 6s Plus 1242px × 2208px 2208px × 1242px iPhone 7 750px × 1334......

业界小白
18分钟前
0
0
浅谈redis

redis是一个开源,内存式的健值存储数据库,也被称为健值存储的字典服务器。健值类型有字符串,hash(哈希类型),set(集合),list(列表) 和有序集合 特征细节: 内存式:redis将健值存储在主...

拐美人
25分钟前
0
0
无限扩容,按需使用!ZStack推出基于阿里云NAS的文件存储服务

日前,ZStack发布2.6.0版本,正式宣布推出基于阿里云NAS的文件存储服务。得益于业界领先的阿里云分布式存储架构,融合NAS后的ZStack 2.6.0拥有高性能、高可靠、容量无限扩展、一键操作、按需...

ZStack社区版
28分钟前
1
0
崛起于Springboot2.X之Mongodb多数据源处理(35)

多数据源:4个mongodb库! 目录结构图: 1、添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId>......

木九天
33分钟前
0
0
如何获取显示器的EDID信息

Q1: 为什么要写这篇文章? A1:在最近的工作中遇到了不少问题,其中很多都是和EDID相关的。可以说,作为一家以“显示”为生的企业,我们时时刻刻在与EDID打交道。EDID这东西很简单,但是如果...

DB_Terrill
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部