Python SHA256 хеширование алгоритм: объяснение
Узнайте все о SHA256, включая его значение, назначение и способы реализации с помощью модуля hashlib
в Python. Умение хэшировать значения для шифрования — полезный навык, особенно при работе с конфиденциальными данными. Это также может помочь при работе с веб-приложениями и необходимости безопасного хранения пароля пользователя.
Оглавление
Что такое хэширование SHA256?
Перед тем, как погрузиться в реализацию алгоритма SHA256 в Python, давайте немного разберемся, что это такое. Аббревиатура SHA расшифровывается как Secure Hash Algorithm и представляет собой криптографические хэш-функции. Эти функции имеют отличные применения в защите конфиденциальной информации, такой как пароли и личные идентификаторы.
Интересные особенности алгоритма SHA256:
Это однонаправленный алгоритм, что означает невозможность восстановления исходного значения с помощью современных технологий
Два различных входных значения практически никогда не дадут одинаковый результат, что позволяет сохранять целостность и уникальность данных
Благодаря этим свойствам можно идентифицировать совпадения в записях, например, находить одинаковые даты рождения или номера социального страхования, даже если данные были обфусцированы.
Использование hashlib в Python для реализации SHA256
Python имеет встроенную библиотеку hashlib
, которая предназначена для предоставления общего интерфейса к различным алгоритмам безопасного хэширования. Модуль предоставляет конструкторы методов для каждого типа хэша. Например, конструктор .sha256()
используется для создания хэша SHA256.
Конструктор sha256 принимает входные данные в виде байтов и возвращает хэшированное значение. У функции есть несколько связанных с хэшированием методов:
encode()
используется для преобразования строки в байтыhexdigest()
используется для преобразования данных в шестнадцатеричный формат
SHA256 для одной строки в Python
# Хэширование одной строки с помощью hashlib.sha256
import hashlib
a_string = 'this string holds important and private information'
hashed_string = hashlib.sha256(a_string.encode('utf-8')).hexdigest()
print(hashed_string)
# Возвращает:
# 4e7d696bce894548dded72f6eeb04e8d625cc7f2afd08845824a4a8378b428d1
SHA256 для целого файла
# Хэширование файла с помощью hashlib.sha256
import hashlib
with open('/Users/datagy/Desktop/sample.txt', 'rb') as f:
for line in f:
hashed_line = hashlib.sha256(line.rstrip()).hexdigest()
print(hashed_line)
SHA256 с Unicode-строками
Поскольку библиотека hashlib
не может хэшировать строки в кодировке unicode, например, в utf-8, сначала необходимо преобразовать строку в байты с помощью методов .encode()
и .hexdigest()
.
Хэширование списка строк с помощью цикла:
# Хэширование списка строк с помощью hashlib.sha256
import hashlib
strings = ['this string holds important and private information', 'this is another string', 'and yet another secret string']
hashed_strings = []
for string in strings:
hashed_strings.append(hashlib.sha256(string.encode('utf-8')).hexdigest())
print(hashed_strings)
Хэширование списка строк с помощью списочного включения:
# Хэширование списка строк с помощью hashlib.sha256
import hashlib
strings = ['this string holds important and private information', 'this is another string', 'and yet another secret string']
hashed_strings = [hashlib.sha256(string.encode('utf-8')).hexdigest() for string in strings]
print(hashed_strings)
SHA256 столбца Pandas
# Хэширование столбца Dataframe с помощью SHA256
import hashlib
import pandas as pd
df = pd.DataFrame.from_dict({
'ID': [1,2,3,4,5,6,7],
'Password': ['cookies', 'ponies', 'iloveyou123', 'p4ssw0rd', 'passwordsaresilly!', 'ilikecoffee987', 'spaceagents444']
})
def hash_unicode(a_string):
return hashlib.sha256(a_string.encode('utf-8')).hexdigest()
df['Hashed Password'] = df['Password'].apply(hash_unicode)
print(df.head())
Заключение
В этом руководстве вы научились использовать библиотеку hashlib
в Python для реализации безопасного алгоритма хэширования SHA256. Вы узнали, что такое этот алгоритм и как он используется. Также вы научились хэшировать отдельную строку, список строк и столбец Dataframe.
Умение эффективно работать с хэшированием строк может значительно повысить безопасность ваших данных. По мере того, как все больше данных переходит в онлайн, это может стать важным способом защиты информации.
Чтобы узнать больше о модуле Python hashlib, ознакомьтесь с официальной документацией здесь.
Last updated