go密码加密

密码加密

此项目用的是scrypt,可在pkg上查询并引入
加密主要方法为scrypt.Key()此方法返回byte切片,需要我们设置几项数据

  • password为要加密的密码或其他数据
  • saltbyte切片一般含有八个对象
  • 其他参数:N,r,p,KeyLen:
    N为CPU/内存成本参数,必须是大于1的2的幂。R和p必须满足R * p <2³⁰。如果参数不满足限制,函数将返回一个nil字节片和一个错误。推荐32768(1<<15)
    将函数返回的函数切片转成string类型即完成加密
salt := []byte{0xc8, 0x28, 0xf2, 0x58, 0xa7, 0x6a, 0xad, 0x7b}
	dk, err := scrypt.Key([]byte(password), salt, 1<<15, 8, 1, 32)
	if err != nil {
		fmt.Printf("cryptPW fail%s", err)
		return " ", err
	}
	psd := base64.StdEncoding.EncodeToString(dk)

此项目中将密码加密的方法放在了User结构体的*BeforeSave()*中,即在操作保存数据库之前将密码加密。*BeforeSave()*为钩子函数的一种,更多关于钩子函数请移步:
https://learnku.com/docs/gorm/v2/hooks/9744#b0014f

tips:在之后的密码操作上,直接将密码转为加密再比对即可。如登入时将输入密码再与数据库加密后的用户密码比对。
输入密码再与数据库加密后的用户密码比对。*

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值