如何在Python中类似于Go中的“ crypto / md5”来计算字符串的md5

我知道这里有 hashlib 在Python中,但我想获得与以下Go语言相同的结果:</ p>

 包main 
\ nimport(
“ crypto / md5”
“ fmt”

func main(){
data:= [] byte(“ 12345”)
fmt.Println(“ sum”,md5。 Sum(data))
}
</ code> </ pre>

func md5.Sum ,它会计算“数据的MD5校验和”。

但是,我在Python中找不到任何类似的函数。</ p>

有什么方法可以像在Go中那样在Python中实现 md5.Sum </ code>吗?</ p >

上面程序的输出是除字符串之外的切片</ strong>:</ p>

  sum [32 44 185 98 172 89  7 91 150 75 7 21 45 35 75 112] 
</ code> </ pre>
</ div>

展开原文

原文

I know there is hashlib in Python, but I want to achieve the same result as in Go below:

package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("12345")
    fmt.Println("sum ", md5.Sum(data))
}

As func md5.Sum described, it calculates "MD5 checksum of the data". However, I don't find any similar function in Python.

Is there any way to achieve md5.Sum in Python as in Go?

The output of program above is a slice other than a string:

sum  [32 44 185 98 172 89 7 91 150 75 7 21 45 35 75 112]

dream04110
dream04110 我刚刚用b“这些椒盐脆饼让我口渴了”测试了我的代码,这些数据与您链接的Go文档中的示例中的数据相同,并且得到的输出与此处所打印的内容相同,即b0804ec967f48520697662a204f5fe72或数字形式[176,128、78、201、103、244、133、32、105、118、98、162、4、245、254、114]
接近 3 年之前 回复
doutiaoku4495
doutiaoku4495 MD5输出16个字节。您的Go代码会将这16个字节输出为0..255范围内的数字。而且很容易让Python根据MD5的总和创建一个数字列表。但是我不明白为什么您的Go代码会打印“12345”中的数字。您能显示原始数据的打印方式吗?
接近 3 年之前 回复
douchao1879
douchao1879 谢谢,请检查我的输出部分:Go的输出是除字符串以外的列表,因此简单地调用pythonAPI无效
接近 3 年之前 回复
drblhw5731
drblhw5731 这是一个单行代码:从hashlib导入md5;print(md5(b'12345')。hexdigest())。输出:827ccb0eea8a706c4c34a16891f84e7b。如果执行echo-n'12345'|在Bash中,md5sum会得到相同的输出。
接近 3 年之前 回复
duanhe6799
duanhe6799 thx,我已经看到了,它无法对数据执行md5.sum
接近 3 年之前 回复
doubi4491
doubi4491 见stackoverflow.com/questions/5297448/…
接近 3 年之前 回复

1个回答



基于PM 2Ring的解决方案,这是一个有效的程序,</ p>

 来自hashlib  import md5 

hexv = md5(b'12345')。hexdigest()
l = [str(int(i + j,16))对于zip(hexv [:: 2],hexv [1]中的i,j :: 2])]]
print(“ sum [” +“,” .join(l)+“]”)
</ code> </ pre>

此打印,</ p >

 总和[130、124、203、14、234、138、112、108、76、52、161、104、145、248、78、123] 
</ code > </ pre>
</ div>

展开原文

原文

Based on PM 2Ring's solution, here is a working program,

from hashlib import md5

hexv = md5(b'12345').hexdigest()
l = [str(int(i+j,16)) for i, j in zip(hexv[::2], hexv[1::2])]
print("sum [" + ", ".join(l)+"]")

This prints,

sum [130, 124, 203, 14, 234, 138, 112, 108, 76, 52, 161, 104, 145, 248, 78, 123]

duandi2853
duandi2853 有一种更简单的方法来进行转换! 只需将md5返回的字节转换为列表即可,例如:list(md5(b'12345')。digest())或Python 2 list(bytearray(mdarray(md5(b'12345')。digest())) 。 FWIW,我尚未发布完整的答案,因为我仍在等待OP阐明他们为什么得到[32 44 185 98 172 89 7 91 150 75 7 21 45 35 75 112]而不是得到的列表的原因。
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问