Golang-Bcrypt加密

2023-05-16

从安全上讲,用户密码一般都是要经过加密(而且不能被解密)后才存储于数据库中,相信现在已经没有什么公司蠢到直接以明文存储密码了吧。

通常有很多方式可以实现密码加密,譬如MD5签名,虽然MD5算法不可逆,然而每次使用MD5生成的字符串都是固定的,这就给暴力破解留下了余地。

如果使用Bcrypt算法加密,那么每次生成的字符串都是不同的,这样产生的密文基本无法破解。Java语言的spring-security 框架内置了BCryptPasswordEncoder来实现Bcrypt加密。当然Go也提供了包golang.org/x/crypto/bcrypt用来实现Bcrypt加密。

以下是一个Go实现 Bcrypt加密,验证明文密文 是否匹配的具体例子:

package main

import (
    "fmt"

    "golang.org/x/crypto/bcrypt"
)

func HashPassword(password string) (string, error) {
    bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
    return string(bytes), err
}

func CheckPasswordHash(password, hash string) bool {
    err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
    return err == nil
}

func main() {
    password := "secret"
    hash, _ := HashPassword(password) // ignore error for the sake of simplicity

    fmt.Println("Password:", password)
    fmt.Println("Hash:    ", hash)

    match := CheckPasswordHash(password, hash)
    fmt.Println("Match:   ", match)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Golang-Bcrypt加密 的相关文章

随机推荐

  • Error: Bootstrap's JavaScript requires jQuery错误 boostrap下拉菜单无效Angular is running in the development

    引入bootstrap时会出现的问题 xff1a boostrap下拉菜单无效 xff0c 浏览器报Uncaught Error Bootstrap 39 s JavaScript requires jQuery错误 xff0c 解决办法
  • iOS性能优化的几个方向

    一 界面优化 1 卡顿原理 要了解卡顿原理 xff0c 需要对帧缓冲区 垂直同步 CPU 和 GPU 几个词进行一下了解 xff0c 然后综合起来 xff0c 就可以得到卡顿的答案 1 1 帧缓冲区 听起来很高大上 xff0c 其实就是用来
  • VMware16虚拟机:下载和安装教程

    Windows 10系统下载 生成iso镜像文件 VMware16虚拟机 xff1a 下载和安装教程 VMware16虚拟机 xff1a 安装Windows10系统 超详细教程 VMware16虚拟机 xff1a 在Windows10系统下
  • 激励视频广告——未来移动APP的商业变现标配?

    你喜欢看广告吗 xff1f 今年6月著名广告人叶茂中接受采访时表示 xff1a 没有人喜欢广告 事实果真如此吗 xff1f Facebook的一份报告呈现出了不一样的答案 xff1a 在不愿花钱移除广告的用户中 xff0c 57 不介意看到
  • Mysql8.0版本忘记密码重置操作

    很多同学忘记密码 xff0c 找到很多攻略无效 xff0c 多是因为攻略适用版本老旧 xff0c 此攻略适用于8 0版本 xff01 第一步 xff1a 在命令行输入net stop mysql命令关闭mysql服务 net stop my
  • C语言---数组排序

    1 冒泡排序 xff08 从后往前 xff09 1 比较相邻的元素 如果第一个比第二个大 xff0c 就交换他们两个 2 对每一对相邻元素作同样的工作 xff0c 从开始第一对到结尾的最后一对 在这一点 xff0c 最后的元素应 该会是最大
  • 【笔记】Debian 11 在国内网络环境下安装 Docker 环境

    Debian 11 在国内网络环境下安装 Docker 环境 配置方法1 安装必要的一些系统工具2 安装GPG证书3 写入软件源信息4 更新并安装Docker CE 具体参考 阿里云官方文档 以下命令都是在 root 用户下执行 配置方法
  • 两个对象List根据属性取交集和差集

    背景介绍 咸鱼君最近做了个需求 excel导入功能 其中 需要对已导入条目的做 更新 未导入的条目做 新增 其余的做 删除 细品需求 无非是对excel的数据和数据库的数组做个差集 交集的处理 打个比方 excel的数据我们定义为 newL
  • 【epoll】epoll使用详解(精髓)--研读和修正

    目录 epoll 和select epoll的接口 如何来使用epoll epoll程序框架 伪代码 xff1a 示例代码 大致流程 实例源码 相关知识 Socket的阻塞模式和非阻塞模式 如何动态的改变listen监听的个数呢 xff1f
  • AtCoder从小白到大神的进阶攻略

    摘自https www cnblogs com LHYLHY p 11572011 html 在此对作者表示感谢 AtCoder从小白到大神的进阶攻略 前言 现在全球最大的编程比赛记分网站非CodeForces和AtCoder莫属了 xff
  • [codeforces 1328B] K-th Beautiful String 研究倒数第二个字母b的位置

    Codeforces Round 629 Div 3 比赛人数10967 codeforces 1328B K th Beautiful String 研究倒数第二个字母b的位置 总目录详见https blog csdn net mrcra
  • [codeforces 1352C] K-th Not Divisible by n 周期

    Codeforces Round 640 Div 4 参与排名人数9749 终于弄明白账号前 的意义 out of competition 也即虽然该用户参加本场比赛 但不参与排名 codeforces 1352C K th Not Div
  • Linux安装、启动、检查、访问、停止Tomcat服务

    一 去官方下载你需要的tomcat版本 xff08 如果已经下载好了 xff0c 请跳过此步骤 xff09 我这里下载的是tomcat9 0 63 xff0c 下载地址 xff1a 我是tomcat9 0 63下载地址 打开页面 xff0c
  • 【三维可视化Qt+OPEN CASCADE-001】傻瓜式配置——可在Qt creator下运行github例程

    前言 因为一个大项目需要 xff0c 在QT界面利用occ做三维可视化的东西 xff0c 所以需要配置 网上的配置攻略不是在VS下用MFC做 xff0c 就是用VS 43 QT的插件 xff0c 也有老哥用Qt Creator做 xff0c
  • Linux下DVWA的搭建

    1 配置CentOS7 1 1 配置yum国内镜像源 span class token function curl span span class token parameter variable o span etc yum repos
  • git clone 报错:fatal: Unencrypted HTTP is not supported for GitLab. Ensure the repository remote URL i

    git版本问题 xff0c 是当前版本过高 xff0c 要求使用https协议 xff0c 需要根据需要安装指定版本 遇到这个问题时我的git版本是 xff1a 需要安装指定版本
  • 以太网帧间隙

    以太网帧间隙 1 什么是IFG xff1f xff08 What xff09 IFG Interframe Gap 帧间距 xff0c 以太网相邻两帧之间的时间断 xff1b 以太网发送方式是一个帧一个帧发送的 xff0c 帧与帧之间需要间
  • Debian修改系统默认语言

    系统版本 xff1a Debian 10 1 0x64 安装过程中选择了中文作为默认语言 xff0c 即zh CN UTF 8 xff0c 现将系统默认语言改为英文 修改方法 xff1a 在Terminal中键入以下命令 xff1a sud
  • 通俗的解释docker

    Docker的思想来自于集装箱 xff0c 集装箱解决了什么问题 xff1f 在一艘大船上 xff0c 可以把货物规整的摆放起来 并且各种各样的货物被集装箱标准化了 xff0c 集装箱和集装箱之间不会互相影响 那么我就不需要专门运送水果的船
  • Golang-Bcrypt加密

    从安全上讲 xff0c 用户密码一般都是要经过加密 xff08 而且不能被解密 xff09 后才存储于数据库中 xff0c 相信现在已经没有什么公司蠢到直接以明文存储密码了吧 通常有很多方式可以实现密码加密 xff0c 譬如MD5签名 xf