crypto/hmac(加密哈希算法)

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 := "15956651891"
	//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)))

}

你可能感兴趣的:(学习笔记,密码学,加密解密,hash,md5)