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