golang md5加密和python md5加密比较

python md5加密和golang md5加密各有不同,记录于此做备忘

Python 方法 md5

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方法 md5 和 sha512

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==

 

posted on 2022-04-25 18:28  星河赵  阅读(586)  评论(0编辑  收藏  举报

导航