Как получить сумму MD5 строки с помощью Python?

В документации Flickr API вам нужно найти сумму строки MD5 для генерации [api_sig] значение.

Как можно получить сумму MD5 из строки?

Пример Flickr:

строка: 000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite

Сумма MD5: a02506b31c1cd46c2e0b6380fb94eb3d

10 ответов

Решение

Для Python 2.x используйте hashlib для python

import hashlib
m = hashlib.md5()
m.update("000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite")
print m.hexdigest()

Выход: a02506b31c1cd46c2e0b6380fb94eb3d

Вы можете сделать следующее:

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())

Однако в этом случае вам, вероятно, лучше использовать этот полезный модуль Python для взаимодействия с Flickr API:

... который будет иметь дело с аутентификацией для вас.

Официальная документация hashlib

Вы можете использовать bсимвол перед строковым литералом:

import hashlib
print(hashlib.md5(b"Hello MD5").hexdigest())
print(hashlib.md5("Hello MD5".encode('utf-8')).hexdigest())

Вне:

e5dadf6524624f79c3127e247f04b548
e5dadf6524624f79c3127e247f04b548

Вы пытались использовать реализацию MD5 в hashlib? Обратите внимание, что алгоритмы хеширования обычно действуют на двоичные данные, а не на текстовые данные, поэтому вы можете быть осторожны с тем, какая кодировка символов используется для преобразования текста в двоичные данные перед хешированием.

Результатом хеширования являются также двоичные данные - похоже, что пример Flickr был преобразован в текст с использованием шестнадцатеричного кодирования. Использовать hexdigest функция в hashlib, чтобы получить это.

Используйте hashlib.md5 в Python 3.

      import hashlib

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

Если вам нужен вывод байтового типа, используйте digest() вместо того hexdigest().

Это сработало для меня в Windows 10:

import hashlib

print(hashlib.md5("string to encode".encode('utf-8')).hexdigest())

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

простой инструментарий :

      In [62]: import hashlib
    ...:
    ...: def make_md5(data: str) -> str:
    ...:     md5_value = hashlib.md5(data.encode('utf-8')).hexdigest()
    ...:     return md5_value
    ...:

In [63]:

In [63]: make_md5("123-123-123-123")
Out[63]: '779e9814651491eae36438dff100820d'

Вы можете попробовать

#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)

Если вы хотите получить результаты, с которыми легко выполнять арифметические операции (т.е. по модулю), вы можете попробовать следующее:

      import hashlib
import struct

struct.unpack('iiii', hashlib.md5(b'hi').digest())

Который дает:

      (1552610889, 753701764, -2104888309, 1006379292)
Другие вопросы по тегам