golang Md5+salt
写网络编程时,需要保存用户的用户名和密码,防止被盗用或者误用。目前计较安全的做法是:Md5+salt。
md5简单讲就是单向不可逆散列。如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。
加Salt可以一定程度上解决这一问题。所谓加Salt方法,就是加点“佐料”。其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确。
用户注册时,
用户输入【账号】和【密码】(以及其他用户信息);
系统为用户生成【Salt值】;
系统将【Salt值】和【用户密码】连接到一起;
对连接后的值进行散列,得到【Hash值】;
将【Hash值1】和【Salt值】分别放到数据库中。
用户登录时,
用户输入【账号】和【密码】;
系统通过用户名找到与之对应的【Hash值】和【Salt值】;
系统将【Salt值】和【用户输入的密码】连接到一起;
对连接后的值进行散列,得到【Hash值2】(注意是即时运算出来的值);
比较【Hash值1】和【Hash值2】是否相等,相等则表示密码正确,否则表示密码错误。
golang提供了md5包可以供直接调用。以下程序演示了使用当前时间作为salt的md5+salt加密过程。
package main
import (
"crypto/md5"
"encoding/hex"
"fmt"
"time"
)
func main() {
salt := time.Now().Unix()
m5 := md5.New()
m5.Write([]byte("Mi Ma"))
m5.Write([]byte(string(salt)))
st := m5.Sum(nil)
fmt.Println(st, hex.EncodeToString(st))
}
golang Md5+salt相关推荐
- Shiro+springboot+mybatis+EhCache(md5+salt+散列)认证与授权-03
从上文:Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02 当每次进行刷新时,都会从数据库重新查询数据进行授权操作,这样无疑给数据库造成很大的压力,所以需要引入 ...
- Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02
代码延续地址:Shiro+springboot+mybatis(md5+salt+散列)认证与授权-01 1.创建t_role角色表(比如管理员admin,普通用户user等),创建t_pers权限表 ...
- Shiro+springboot+mybatis(md5+salt+散列)认证与授权-01
这个小项目包含了注册与登录,使用了springboot+mybatis+shiro的技术栈:当用户在浏览器登录时发起请求时,首先这一系列的请求会被拦截器进行拦截(ShiroFilter),然后拦截器根 ...
- shiro认证+授权(使用MD5+salt+散列加密)
通过上文自定义realm分析源码可得https://blog.csdn.net/Kevinnsm/article/details/11183124 用户认证在doGetAuthenticationIn ...
- 应用密码学的笑话之MD5+Salt不安全
这段时间诸多爆库的新闻,里面有许多饶有趣味的事情.那些用简单密码,或者一个密码走天下的笑话就不说了,咱说点有内涵的.(这篇文章是给IT界的人看的,如果你看不懂,我会准备一个简单的"如何辨别密 ...
- MD5 + salt 的加密算法
2019独角兽企业重金招聘Python工程师标准>>> MD5 + salt 的加密算法 对于这次泄露门事件,因为本人的账号(CSDN)有在内所以很想说shit-同时觉得csdn ...
- Md5+salt实现用户加密
一.md5 1.1 作用 一般用来进行加密或者签名 特点:md5内容不可逆,相同的内容不论执行多少次,md5加密算法生成的结果都是一致的. 结果:生成的结果是一个32位的16进制字符串. 二 md5+ ...
- 使用md5+salt+hash散列查询
一.说明 1.分析 通过MD5+salt+hash散列进行用户登录查询. 重点:(1)加密存储到数据库(2)验证登录用户信息和数据库信息是否一致 2.目录结构 二.范例 1.调用类 (1)代码块 pa ...
- 浅谈Md5+Salt加密
一 为什么需要加密? 比如当前有个用户进行注册,他输入的账号密码是"ltl"和"123456",那么我们肯定要将账号密码保存到数据库中.在没有接触过" ...
最新文章
- java简单的ID生成器
- QIIME 2用户文档. 3老司机上路指南(2019.7)
- 【IT基础】常见的开发文档
- 量子计算机物理学,百年的超越:量子物理学与量子计算机
- android 自定义图片上传,android自定义ImageView仿图片上传示例
- php post请求后端拿不到值_PHP Post获取不到非表单数据的问题解决办法
- 自动驾驶使用贝塞尔曲线进行动态障碍物避障测试
- IDEA 快速创建 SpringBoot 项目
- Axure基本使用(一)
- 5V转3V的降压芯片和LDO
- amd编码器 hevc_支持 AMD VCE H.264 编码器在Bandicam录制视频 - Bandicam(班迪录屏)
- STL 常用容器(1)--string
- 女子租房有钱交房租 男中介竟然不收她钱_无界财富
- jsp怎么设置页面背景
- html 数字变成图片,从100到1000数字表图片
- c++ bind函数
- 五行Python自动换你的电脑桌面壁纸(内附源码和exe)
- PostgreSQL 10.1 手册_部分 III. 服务器管理_第 20 章 客户端认证
- fresco混淆问题
- 2016计算机技能大赛,教育部关于公布2016年全国职业院校技能大赛获奖名单的通知...
热门文章
- 图像特征提取三大法宝:HOG特征、LBP特征、Haar-like特征
- 数据挖掘实战(5):实战篇
- 在日本做开发的日子(生活-用和行)
- 用ffmpeg剪辑视频(无编码变化快速切割)(带有快速无转码批量剪辑视频工具下载)
- Linux开机关闭防火墙端口
- 常用的AI人工智能算法库
- win95游戏移植linux,中国网友成功将Win95系统移植入iPhone6 Plus
- Pointnet2_pytorch代码复现
- 中南大学计算机英语统考每年题目一样吗,2020考研只剩96天,2019中南大学计算机考研真题回忆篇...
- C语言-文件操作-练习