golang md5加密和python md5加密比较
Python 方法
import base64
import hashlib
def get_md5_data(body):
"""
md5加密
:param body_json:
:return:
"""
md5lib = hashlib.md5()
md5lib.update(body.encode("utf-8"))
body_md5 = md5lib.digest()
body_md5 = base64.b64encode(body_md5)
return body_md5
if __name__ == "__main__":
d = get_md5_data("woGo")
print(d)
输出结果:
b'daK0g/biVYQtHOZt0PaoEQ=='
hash.digest()hash.hexdigest()
hash.digest()
hash.hexdigest()
import hashlib
md5 = hashlib.md5()
md5.update("a".encode('utf-8'))
print(u"digest返回的摘要:%s"% md5.digest())
print(u"hexdigest返回的摘要:%s"% md5.hexdigest())
结果
digest返回的摘要:b'\x0c\xc1u\xb9\xc0\xf1\xb6\xa81\xc3\x99\xe2iw&a' hexdigest返回的摘要:0cc175b9c0f1b6a831c399e269772661
Golang方法
package main
import (
"crypto/md5"
"crypto/sha512"
"encoding/base64"
"encoding/hex"
"fmt"
)
func main() {
//fmt.Println(base64EncodeStr("2121"))
//fmt.Println(md5Str("woGo"))
//fmt.Println(sha512Str("woGo"))
//fmt.Println(base64DecodeStr(base64EncodeStr("fd")))
// md5加密
has := md5.New() // 创建md5算法
has.Write([]byte("woGo")) // 写入需要加密的数据
b := has.Sum(nil) // 获取hash值字符切片;Sum函数接受一个字符切片,这个切片的内容会原样的追加到abc123加密后的hash值的前面,这里我们不需要这么做,所以传入nil
fmt.Println(base64EncodeStr(string(b)))
}
//md5验证
func md5Str(src string) string {
h := md5.New()
h.Write([]byte(src)) //
//fmt.Printf("%s\n", hex.EncodeToString(h.Sum(nil))) // 输出加密结果
return hex.EncodeToString(h.Sum(nil))
}
//sha512验证
func sha512Str(src string) string {
h := sha512.New()
h.Write([]byte(src)) //
//fmt.Printf("%s\n", hex.EncodeToString(h.Sum(nil))) // 输出加密结果
return hex.EncodeToString(h.Sum(nil))
}
//base编码
func base64EncodeStr(src string) string {
return string(base64.StdEncoding.EncodeToString([]byte(src)))
}
//base解码
func base64DecodeStr(src string) string {
a, err := (base64.StdEncoding.DecodeString(src))
if err != nil {
return "error"
}
return string(a)
}
输出结果:
daK0g/biVYQtHOZt0PaoEQ==