如何使用python获取字符串的MD5总和?

sup*_*er9 238 python md5 flickr

Flickr API文档中,您需要找到字符串的MD5总和以生成[api_sig]值.

如何从字符串生成MD5总和?

Flickr的例子:

串: 000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite

MD5总和: a02506b31c1cd46c2e0b6380fb94eb3d

Mar*_*air 514

您可以执行以下操作:

Python 2.x

import hashlib
print hashlib.md5("whatever your string is").hexdigest()
Run Code Online (Sandbox Code Playgroud)

Python 3.x

import hashlib
print(hashlib.md5("whatever your string is".encode('utf-8')).hexdigest())
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,您可能最好使用这个有用的Python模块与Flickr API进行交互:

...将为您处理身份验证.

hashlib的官方文档

  • @JeffHu,因为`hashlib.md5`需要[像字节一样的对象](https://docs.python.org/3/glossary.html#term-bytes-like-object) (3认同)
  • 不错的答案!请问为什么在Python 2中我们不需要进行utf-8编码,但是在Python 3中我们需要进行编码。谢谢。@马克·朗艾尔 (2认同)

Ikk*_*kke 241

对于Python 2.x,使用python的hashlib

import hashlib
m = hashlib.md5()
m.update("000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite")
print m.hexdigest()
Run Code Online (Sandbox Code Playgroud)

输出: a02506b31c1cd46c2e0b6380fb94eb3d

  • 不要尝试使用`hashlib.md5().update('your string').hexdigest()`,因为`update()`返回None,所以它不起作用.如果您想要一个单行解决方案,请使用Mark Longair的答案. (71认同)

pro*_*sti 13

您可以b在字符串文字前使用字符

import hashlib
print(hashlib.md5(b"Hello MD5").hexdigest())
print(hashlib.md5("Hello MD5".encode('utf-8')).hexdigest())
Run Code Online (Sandbox Code Playgroud)

出去:

e5dadf6524624f79c3127e247f04b548
e5dadf6524624f79c3127e247f04b548
Run Code Online (Sandbox Code Playgroud)

  • 如果放在字符串变量前面呢?此语法不适用于“b'string_variable”。 (2认同)

Jon*_*eet 10

您是否尝试过在hashlib中使用MD5实现?请注意,散列算法通常作用于二进制数据而不是文本数据,因此您可能需要注意在散列之前使用哪种字符编码从文本转换为二进制数据.

哈希的结果也是二进制数据 - 看起来Flickr的示例已经使用十六进制编码转换为文本.使用hexdigesthashlib中的函数来获取它.


小智 8

在 Python 3 中使用 hashlib.md5。

import hashlib

source = '000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite'.encode()
md5 = hashlib.md5(source).hexdigest() # returns a str
print(md5) # a02506b31c1cd46c2e0b6380fb94eb3d
Run Code Online (Sandbox Code Playgroud)

如果您需要字节类型输出,请使用digest()而不是hexdigest().


Pea*_*ace 5

这在 Windows 10 上对我有用:

import hashlib

print(hashlib.md5("string to encode".encode('utf-8')).hexdigest())
Run Code Online (Sandbox Code Playgroud)