Go语言中密码加密校验
2024-09-08 19:17:37
使用go自带的库bcrypt
- bcrypt是不可逆的加密算法,无法通过解密密文得到明文。
- bcrypt和其他对称或非对称加密方式不同的是,不是直接解密得到明文,也不是二次加密比较密文,而是把明文和存储的密文一块运算得到另一个密文,如果这两个密文相同则验证成功。
下载
go mod download golang.org/x/crypto
基础使用
package main
import (
"fmt"
"golang.org/x/crypto/bcrypt"
)
func main() {
password1 := "abcdef"
password2 := "aaaaaa"
//加密密码
b, err := bcrypt.GenerateFromPassword([]byte(password1), bcrypt.DefaultCost)
if err != nil {
panic(err)
}
fmt.Println(string(b))
//对比密码
err = bcrypt.CompareHashAndPassword(b, []byte(password2))
if err != nil {
fmt.Println("密码不正确")
} else {
fmt.Println("密码正确")
}
}
/*
$2a$10$vQwzoSLD4tFM015PigJLvehFvgyNiM/OOugw.OX9HzD9zOjvrUX2.
密码不正确
*/
最新文章
- echarts3 -arcgis echarts.js修改
- [javascript] 使用闭包编写模块
- JAVA的extends用法
- spring 与 CXF 整合 webservice 出现error “Unable to locate Spring NamespaceHandler for XML schema namespace” 总结
- Tomcat学习笔记 - 错误日志 - NetBeans配置tomcat出错情况总结 -- 部署错误: 启动 Tomcat 失败。-- '127.0.0.1' 不是内部或外部命令,也不是可运行的程序
- Linux学习之十一、环境变量的功能
- 使用after伪类清除浮动
- jQuery的ajax详解
- mysqldump备份表中有大字段失败的排错过程
- MVC+EF 序列化类型为“System.Data.Entity.DynamicProxies.__的对象时检测到循环引用
- 使用elasticsearch分页时报max_result_window is too large的错误解决方案
- 通用 正则表达式 C# (.NET)Regex 总结
- java httpclient post xml demo
- Vue购物车
- 如何完全卸载VS2010(亲自体验过) (转)
- js原生态函数中使用jQuery中的 $(this)无效的解决方法
- Django介绍(2)
- SAP函数PREPARE_STRING:提取字符串中的数字
- 跟厂长学PHP7内核(二):源码分析的环境与工具
- Java精选笔记_集合【Set(集合)接口】