golang关于md5加密

md5加密

  • 要求1:密文
  • 要求2:密文不可反解
  • 非对称加密和对称加密
  • 加密算法:DES、AES、RSA、SM2、SM3、SM4、3DES、RC4、MD5
  • md5 信息摘要算法

md5的盐值加密

生成一个指定长度的摘要字符串
1.压缩性 任意长度数据 算出的md5值固定长度
2.容易计算 从源数据计算出md5值很容易
3.抗修改性 对元数据进行任何一个字节修改,md5值差别就很大
4.强碰撞
5.不可逆,不可反解

package main

import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"io"
	"github.com/anaskhan96/go-password-encoder"
)

func main() {

	// md5
	// 生成md5
	// e10adc3949ba59abbe56e057f20f883e
	// e10adc3949ba59abbe56e057f20f883e
	md5Str := getMd5("123456")
	fmt.Print(md5Str)
}

func getMd5(code string) string {
	// 获取md5
	hash := md5.New()
	_, _ = io.WriteString(hash, code)
	return hex.EncodeToString(hash.Sum(nil))
}


https://github.com/anaskhan96/go-password-encoder

进行密码随机生成和加密

	// md5
	// 生成md5
	// e10adc3949ba59abbe56e057f20f883e
	// e10adc3949ba59abbe56e057f20f883e

	// Using the default options

	//生成salt 和加密后的密码
	salt, encodedPwd := password.Encode("generic password", nil)
	check := password.Verify("generic password", salt, encodedPwd, nil)
	//Using custom options
	options := &password.Options{16, 100, 32, sha512.New}
	salt, encodedPwd = password.Encode("generic password", options)
	// 生成新的密码
	newPassword := fmt.Sprintf("$pbkdf2-sha512$%s$%s", salt, encodedPwd)
	fmt.Println(salt, encodedPwd)
	// 解析
	passwordInfo := strings.Split(newPassword, "$")
	check = password.Verify("generic password", passwordInfo[2], passwordInfo[3], options)
	fmt.Println(check) // true
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值