Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
build-web-application-with-golang
提交
592540c6
B
build-web-application-with-golang
项目概览
OpenDocCN
/
build-web-application-with-golang
通知
2
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
build-web-application-with-golang
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
592540c6
编写于
12月 18, 2016
作者:
V
vCaesar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add 0.9.5.md syntax highlighting
上级
47151f9f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
7 addition
and
1 deletion
+7
-1
zh/09.5.md
zh/09.5.md
+7
-1
未找到文件。
zh/09.5.md
浏览文件 @
592540c6
...
...
@@ -7,6 +7,7 @@
目前用的最多的密码存储方案是将明文密码做单向哈希后存储,单向哈希算法有一个特征:无法通过哈希后的摘要(digest)恢复原始数据,这也是“单向”二字的来源。常用的单向哈希算法包括SHA-256, SHA-1, MD5等。
Go语言对这三种加密算法的实现如下所示:
```
Go
//import "crypto/sha256"
h := sha256.New()
...
...
@@ -23,6 +24,7 @@ Go语言对这三种加密算法的实现如下所示:
io.WriteString(h, "需要加密的密码")
fmt.Printf("%x", h.Sum(nil))
```
单向哈希有两个特性:
-
1)同一个密码进行单向哈希,得到的总是唯一确定的摘要。
...
...
@@ -40,6 +42,8 @@ Go语言对这三种加密算法的实现如下所示:
没有攻不破的盾,但也没有折不断的矛。现在安全性比较好的网站,都会用一种叫做“加盐”的方式来存储密码,也就是常说的 “salt”。他们通常的做法是,先将用户输入的密码进行一次MD5(或其它哈希算法)加密;将得到的 MD5 值前后加上一些只有管理员自己知道的随机串,再进行一次MD5加密。这个随机串中可以包括某些固定的串,也可以包括用户名(用来保证每个用户加密使用的密钥都不一样)。
```
Go
//import "crypto/md5"
//假设用户名abc,密码123456
h := md5.New()
...
...
@@ -60,6 +64,7 @@ Go语言对这三种加密算法的实现如下所示:
last :=fmt.Sprintf("%x", h.Sum(nil))
```
在两个salt没有泄露的情况下,黑客如果拿到的是最后这个加密串,就几乎不可能推算出原始的密码是什么了。
## 专家方案
...
...
@@ -72,9 +77,10 @@ Go语言对这三种加密算法的实现如下所示:
这里推荐
`scrypt`
方案,scrypt是由著名的FreeBSD黑客Colin Percival为他的备份服务Tarsnap开发的。
目前Go语言里面支持的库http://code.google.com/p/go/source/browse?repo=crypto#hg%2Fscrypt
```
Go
dk := scrypt.Key([]byte("some password"), []byte(salt), 16384, 8, 1, 32)
```
通过上面的的方法可以获取唯一的相应的密码值,这是目前为止最难破解的。
## 总结
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录