代码地址:https://gitcode.net/m0_51510236/go_password

首先我们来初始化一个项目

go mod init go_password

golang密码加密我们可以使用 golang.org/x/crypto/bcrypt 包:

go get "golang.org/x/crypto/bcrypt"

然后我们可以在 utils 包中编写一个 password.go 文件,用于密码加密,代码如下:

package utilsimport "golang.org/x/crypto/bcrypt"// EncryptPassword 将密码加密,需要传入密码返回的是加密后的密码
func EncryptPassword(password string) (string, error) {// 加密密码,使用 bcrypt 包当中的 GenerateFromPassword 方法,bcrypt.DefaultCost 代表使用默认加密成本encryptPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)if err != nil {// 如果有错误则返回异常,加密后的空字符串返回为空字符串,因为加密失败return "", err} else {// 返回加密后的密码和空异常return string(encryptPassword), nil}
}// EqualsPassword 对比密码是否正确
func EqualsPassword(password, encryptPassword string) bool {// 使用 bcrypt 当中的 CompareHashAndPassword 对比密码是否正确,第一个参数为加密后的密码,第二个参数为未加密的密码err := bcrypt.CompareHashAndPassword([]byte(encryptPassword), []byte(password))// 对比密码是否正确会返回一个异常,按照官方的说法是只要异常是 nil 就证明密码正确return err == nil
}

然后我们编写一个程序执行一下这个加密代码:

package mainimport ("fmt""go_password/utils"
)// 程序的主入口,用于测试密码加密和对比加密后的字符串
func main() {// 定义密码password := "123456"// 尝试第一次加密密码encrypt1, _ := utils.EncryptPassword(password)// 打印第一次加密的密码fmt.Printf("第一次加密密码:%v\n", encrypt1)// 尝试第二次加密密码encrypt2, _ := utils.EncryptPassword(password)// 打印第二次加密的密码fmt.Printf("第一次加密密码:%v\n", encrypt2) // 可以发现两次加密密码是不一样的结果// 对比密码是否正确,第一次加密的字符串加密对比passwordEquals := utils.EqualsPassword(password, encrypt1)fmt.Printf("使用第一次加密的密码字符串对比密码是否正确:%v\n", passwordEquals)// 对比密码是否正确,第二次加密的字符串加密对比passwordEquals = utils.EqualsPassword(password, encrypt2)fmt.Printf("使用第二次加密的密码字符串对比密码是否正确:%v\n", passwordEquals)// 尝试对比一个错误的密码passwordEquals = utils.EqualsPassword("1234567", encrypt1) // 1234567 是错误的密码fmt.Printf("尝试用错误的密码对比密码是否正确:%v\n", passwordEquals)
}

运行这个 main 方法,我们可以查看结果:

我们可以看到两次密码加密的结果是不一样的,因为对密码加密的时候添加了盐。这种密码加密是非常安全且不可逆的,可以放心使用,并且我们对比密码是否正确也返回了正确的结果,可以用这个方法去写一个注册登陆的功能了!

Golang将密码盐加密相关推荐

  1. Java AES密码盐加密

    Java AES密码盐加密 import lombok.extern.slf4j.Slf4j; import org.apache.tomcat.util.codec.binary.Base64;im ...

  2. CAS 密码盐值加密

    说明:MD5加密时query[0],MD5盐值加密时encode[0],MD5加密时fieldPassword,MD5盐值加密时passwordFieldName 1.MD5加密 配置加密策略,直接在 ...

  3. happyCode(11start) 权限控制 shiro 密码MD5安全加密,密码盐,系统用户认证

    用户:匿名权限(游客,不需要登入就具备的权限) 用户认证:是一个真正的用户 权限认证:是否具有一些特权,菜单权限,按钮权限,url访问权限 从最简单的用户登入.登出开始(11start)-->权 ...

  4. Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

    前言 在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的.最经典的就是密码了.如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的. 那么我们就 ...

  5. 数据库密码MD5加密、加盐的理解

    一.MD5加密 1)为什么?如果数据库里用户账号的密码没有加密处理,如果数据库被盗,密码被知道导致用户数据被窃取,这是很危险的.数据库里存放密码的密文会安全一点,密码安全性高的话破解也需要时间. 2) ...

  6. 密码MD5加盐加密----注册、校验、修改模块

    思路:     单纯的MD5加密容易被碰撞破解,考虑将密码加上一个随机字符串(盐),再一同进行MD5加密,提高安全性. 此时,盐相当于另一半秘钥,需将盐一同存入数据库,用以验证. 实现过程:      ...

  7. 【SpringSSM项目】搏击俱乐部 使用邮箱进行登录注册 密码加盐加密

    在注册页面使用邮箱进行注册,注册后发送带有确认码的邮件到邮箱中,通过邮件确认注册 编写数据库 登录注册需要使用到用户表 table userinfo 包含 账号状态 用户名 邮箱 密码 头像 过期时间 ...

  8. 什么是盐加密 为什么使用盐加密密码

    加盐加密是一种对系统登录口令的加密方式,它实现的方式是将每一个口令同一个叫做"盐"(salt)的n位随机数相关联.无论何时只要口令改变,随机数就改变.随机数以未加密的方式存放在口令 ...

  9. 将 Shiro 作为应用的权限基础 五:密码的加密/解密在Spring中的应用

    2019独角兽企业重金招聘Python工程师标准>>> 考虑系统密码的安全,目前大多数系统都不会把密码以明文的形式存放到数据库中. 一把会采取以下几种方式对密码进行处理 密码的存储 ...

最新文章

  1. C++编程进阶8(最好不要实现类型转换运算符、单形参的构造函数与类型转换、临时对象与RVO)
  2. 都在说GPT-3和AlphaFold,2020没点别的AI技术突破了?
  3. 我的Linux随笔目录
  4. linux下的socket通信小程序分享——第三圣子
  5. RocketMQ 错误:The broker does not support consumer to filter message by SQL92
  6. android studio运行模拟器报错请求超时_GDA关于android脱壳的问题说明
  7. Atitit.cto 与技术总监的区别
  8. PDF与Base64的相互转换以及操作
  9. 10款滑动门代码_jquery 滑动门_js滑动门_tab滑动门_jquery 选项卡_js选项卡_tab选项卡效果(三)
  10. Mac安装双系统后在Windows下体验mac原生触控功能(双指、三指、四指)
  11. 以太网交换机的功能与特点
  12. 关于传播速率和传输速率的区别
  13. 跨域问题的解决-gateway跨域接解决方案,使用CorsWebFilter
  14. 华为WeAutomate RPA介绍
  15. matlab从excel第二行写,matlab从某行读excel
  16. Spring AOP
  17. 煤矿用计算机,计算机技术在煤矿安全生产中应用
  18. 喜讯|宏时数据获得CMMI3级认证!欢迎了解自研统一运维监控平台!
  19. 2007-05-13
  20. 切片和切块 钻取 旋转

热门文章

  1. java调用飞信接口免费短信发送到对方手机
  2. [Alpha阶段]第十次Scrum Meeting
  3. QQ 浏览器(iOS版)崩溃信息研究
  4. 12个最佳的响应式网页设计教程,轻松带你入门
  5. Ubuntu Qt无法使用搜狗输入法
  6. 关于CASIO系列可编程计算器在公路施工测量中的应用
  7. MAYA2018常用命令
  8. 中国式家长——旅行者困境
  9. dual功能计算机,dual是什么意思车上的-功能介绍须知
  10. openstack云计算平台<2>--核心组件配置->认证服务