でFlickrのAPIドキュメント、あなたが生成する文字列のMD5サム見つける必要がある[api_sig]
値を。
文字列からMD5サムを生成するにはどうすればよいですか?
Flickrの例:
ストリング: 000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite
MD5合計: a02506b31c1cd46c2e0b6380fb94eb3d
でFlickrのAPIドキュメント、あなたが生成する文字列のMD5サム見つける必要がある[api_sig]
値を。
文字列からMD5サムを生成するにはどうすればよいですか?
Flickrの例:
ストリング: 000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite
MD5合計: a02506b31c1cd46c2e0b6380fb94eb3d
回答:
Python 2.xの場合、pythonのhashlibを使用します
import hashlib
m = hashlib.md5()
m.update("000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite")
print m.hexdigest()
出力: a02506b31c1cd46c2e0b6380fb94eb3d
m.digest_size
です。このコードの上で、内部ダイジェストはすでに16バイトです。
m.hexdigest()[:16]
次のことができます。
Python 2.x
import hashlib
print hashlib.md5("whatever your string is").hexdigest()
Python 3.x
import hashlib
print(hashlib.md5("whatever your string is".encode('utf-8')).hexdigest())
ただし、この場合は、Flickr APIとのやり取りにこの便利なPythonモジュールを使用した方がよいでしょう。
...認証を処理します。
hashlibの公式ドキュメント
""
)はユニコードであり、バイト文字列にエンコードする必要があります。python2の文字列はbtyestringまたはunicode文字列として解釈でき、str(""
)文字列を渡すとバイト文字列として解釈されます。文字列にUnicode文字が含まれていると、例外が発生します。バイト文字列をエンコードすると、ASCII文字はそのまま残り、Unicodeは正しく変換されます
hashlibで MD5実装を使用してみましたか?ハッシュアルゴリズムは通常、テキストデータではなくバイナリデータに作用するため、ハッシュする前にテキストからバイナリデータに変換するために使用する文字エンコーディングに注意する必要がある場合があります。
ハッシュの結果もバイナリデータです。Flickrの例は、16進エンコーディングを使用してテキストに変換されているようです。hexdigest
これを取得するには、hashlib の関数を使用します。
b
文字列リテラルの前に文字を使用できます:
import hashlib
print(hashlib.md5(b"Hello MD5").hexdigest())
print(hashlib.md5("Hello MD5".encode('utf-8')).hexdigest())
でる:
e5dadf6524624f79c3127e247f04b548
e5dadf6524624f79c3127e247f04b548
あなたは試すことができます
#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)
hashlib.md5().update('your string').hexdigest()
れるため機能しupdate()
ません。1行のソリューションが必要な場合は、Mark Longairの回答を使用してください。