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   星河赵  阅读(601)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2021-04-25 Python+OpenCV实现png透明图像叠加在jpg图像上
2021-04-25 PYthon 从numpy数组去除重复元素,行或列
2019-04-25 crontab 选择编辑器 select-editor

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示