Go语言中密码加密校验

使用go自带的库bcrypt

  1. bcrypt是不可逆的加密算法,无法通过解密密文得到明文。
  2. 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.
密码不正确
*/
posted @ 2023-02-25 15:17  厚礼蝎  阅读(142)  评论(0编辑  收藏  举报