Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python获取字符串的MD5和?_Python_Md5_Flickr - Fatal编程技术网

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

如何使用python获取字符串的MD5和?,python,md5,flickr,Python,Md5,Flickr,在中,您需要找到字符串的MD5和,以生成[api_sig]值 如何从字符串生成MD5和 Flickr的例子: 字符串:000005fab4534d05api_键9A0554259914A86FB9E7EB014E4E5D52PERMSWRITE MD5总和:A02506B31C16C2E0B6380FB94EB3D您在中尝试过使用MD5实现吗?请注意,散列算法通常作用于二进制数据而不是文本数据,因此在散列之前,您可能需要注意使用哪个字符编码将文本转换为二进制数据 Try This import

在中,您需要找到字符串的MD5和,以生成
[api_sig]

如何从字符串生成MD5和

Flickr的例子:

字符串:
000005fab4534d05api_键9A0554259914A86FB9E7EB014E4E5D52PERMSWRITE


MD5总和:
A02506B31C16C2E0B6380FB94EB3D

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

Try This 
import hashlib
user = input("Enter text here ")
h = hashlib.md5(user.encode())
h2 = h.hexdigest()
print(h2)

散列的结果也是二进制数据——看起来Flickr的示例已经使用十六进制编码转换为文本。使用hashlib中的
hexdigest
函数获取此信息。

您可以执行以下操作:

python2.x

import hashlib
print hashlib.md5("whatever your string is").hexdigest()
import hashlib
print(hashlib.md5("whatever your string is".encode('utf-8')).hexdigest())

Python3.x

import hashlib
print hashlib.md5("whatever your string is").hexdigest()
import hashlib
print(hashlib.md5("whatever your string is".encode('utf-8')).hexdigest())

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

。。。它将为您处理身份验证


Python2.x的官方文档,使用Python的

输出:
a02506b31c1cd46c2e0b6380fb94eb3d

您可以使用

Try This 
import hashlib
user = input("Enter text here ")
h = hashlib.md5(user.encode())
h2 = h.hexdigest()
print(h2)
#python3
import hashlib
rawdata = "put your data here"
sha = hashlib.sha256(str(rawdata).encode("utf-8")).hexdigest() #For Sha256 hash
print(sha)
mdpass = hashlib.md5(str(sha).encode("utf-8")).hexdigest() #For MD5 hash
print(mdpass)
您可以使用:


输出:


在Python 3中使用hashlib.md5

import hashlib

source = '000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite'.encode()
md5 = hashlib.md5(source).hexdigest() # returns a str
print(md5) # a02506b31c1cd46c2e0b6380fb94eb3d

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

我看到了API。我只是好奇我怎么能做到。谢谢hexdigest()返回一个32字符长的摘要。如何获得16个字符的摘要?回答得好!我想问一下,为什么在Python2中我们不需要进行utf-8编码,而在Python3中我们需要进行编码。谢谢@做记号Longair@JeffHu,因为
hashlib.md5
希望Python 2中也应该使用Python 3版本@JeffHu对@MaxU所说的进行了扩展,md5函数采用bytestring,不接受unicode。Python3(正确地)是严格/显式的,因此str(
“”
)是unicode,必须编码为bytestring。python2中的字符串可以解释为btyestring或unicode字符串,传递str(
“”
)字符串将解释为ByTestString。如果字符串包含unicode字符,则会引发异常。编码bytestring将保留ascii字符不变,并正确转换unicode。不要尝试使用
hashlib.md5().update('your string').hexdigest()
,因为
update()
不返回任何字符,所以它将不起作用。如果您想要一行解决方案,请使用Mark Longair的答案。@ChristopherManning m.hexdigest()返回一个32字符长的摘要。如何获得16个字符长的摘要?@Darwesh它是32个字符,因为它是十六进制表示法,在这段代码上加一个
m.digest\u size
,内部摘要已经是16个字节了。@Darwesh你可以简单地将字符串
m.hexdigest()[:16]
@Darwesh根据,md5总是16个字节。如果您只需要16个字符长的摘要,可以按照Baris Demiray所说的进行切片。hexdigest()返回32个字符长的摘要。如何获得16个字符的摘要?@Darwesh:是的,MD5是128位,即32个十六进制字符。如果您想要较小的摘要,则需要64位摘要。这将是相当薄弱的,虽然。。。