package main
import (
"crypto/hmac"
"crypto/md5"
"crypto/sha256"
"fmt"
)
//sha256加密算法
func Sha256(message string, key string) (secretMessage []byte) {
//创建对应的sha256哈希加密算法,这里的key为加密密钥
hash := hmac.New(sha256.New, []byte(key))
// 写入加密数据,这里的"abc123"为加密信息,即需要加密的对象
hash.Write([]byte(message))
secretMessage = hash.Sum(nil)
return
}
func CheckSha256(message, secrectMessage, key []byte) bool {
//message为需要加密的原始信息,secrectMessage为加密后的字符串,key为加密密钥
hash := hmac.New(sha256.New, key) // 创建hash加密算法
//对原始信息进行加密
hash.Write(message) // 写入数据
expectedMAC := hash.Sum(nil) //获取加密后的hash
// 比较预期的hash和实际的hash
return hmac.Equal(expectedMAC, secrectMessage)
}
//md5加密算法
func Md5(message string, key string) (secretMessage []byte) {
//创建对应的sha256哈希加密算法,这里的key为加密密钥
hash := hmac.New(md5.New, []byte(key))
// 写入加密数据,这里的"abc123"为加密信息,即需要加密的对象
hash.Write([]byte(message))
secretMessage = hash.Sum(nil)
return
}
func CheckMd5(message, secrectMessage, key []byte) bool {
//message为需要加密的原始信息,secrectMessage为加密后的字符串,key为加密密钥
hash := hmac.New(md5.New, key) // 创建hash加密算法
//对原始信息进行加密
hash.Write(message) // 写入数据
expectedMAC := hash.Sum(nil) //获取加密后的hash
// 比较预期的hash和实际的hash
return hmac.Equal(expectedMAC, secrectMessage)
}
func main() {
//创建信息和密钥
key := "abc123"
message := "1597866643431"
//sha256加密算法,加密
Hash256Message := Sha256(message, key)
fmt.Printf("Hash256Message: %+v", Hash256Message)
//校验是否是相同的密码
fmt.Println("是否相同:", CheckSha256([]byte(message), Hash256Message, []byte(key)))
//Md5加密算法,加密
Md5Message := Md5(message, key)
fmt.Printf("Md5Message: %+v", Md5Message)
//校验是否是相同的密码
fmt.Println("是否相同:", CheckMd5([]byte(message), Md5Message, []byte(key)))
}
crypto/hmac(加密哈希算法)
最新推荐文章于 2024-02-03 10:13:42 发布