/*
* Go Lang中MD5加密方法: 密码 + 盐(一串随机数)再Hash的方式
*/
package main
import (
"crypto/md5"
"fmt"
"io"
)
// 定义常量,加密密码的盐
const salt = "slo3!458@#134@"
func main() {
passwd := "admin"
hash_md5_fun1(passwd)
hash_md5_fun2(passwd)
}
// 方法一 密码 + 盐
func hash_md5_fun1(pwd string) string {
data := []byte(pwd + salt) // 字符串转byte
has := md5.Sum(data) // 对byte数据加密
md5str1 := fmt.Sprintf("%x", has) // 将[]byte转成16进制
fmt.Println(md5str1)
return md5str1
}
// 方法二 密码 + 盐
func hash_md5_fun2(pwd string) string {
w := md5.New() // 初始化一个MD5对象
io.WriteString(w, pwd+salt) // 将str写入到w中
md5str2 := fmt.Sprintf("%x", w.Sum(nil))
fmt.Println(md5str2)
return md5str2
}