Другие языки программирования и технологии

Как сделать простенький хэш пароля?

У нас пароль 8 бит
Хэш создаём, необратимо. Это следует из описание термина.
И должен быть лавинный эффект.
Какими простенькими операциями его сделать?
Для создания простого хэша пароля можно использовать несколько простых операций. Одним из способов является использование функции хеширования, такой как MD5 или SHA-1. Однако, эти функции могут быть уязвимы к атакам, поэтому лучше использовать более современные функции, такие как SHA-256 или SHA-512.
Если вы хотите создать свой собственный хэш, то можно использовать простые операции, такие как XOR, сдвиг битов и циклические сдвиги. Например, можно применить XOR к каждому байту пароля и ключа, а затем применить циклический сдвиг на полученном значении. Это создаст лавинный эффект, который обеспечит необратимость хэша.
Пример простого хэша пароля на языке Python:
 password = "password" 
key = "secret_key"

# Применяем XOR к каждому байту пароля и ключа
result = bytearray()
for i in range(len(password)):
result.append(password[i] ^ key[i % len(key)])

# Применяем циклический сдвиг
hash_value = 0
for b in result:
hash_value = ((hash_value
OL
Oleg Lisin
14 273
Лучший ответ
>На каждый пароль должен быть свой хэш
Это либо принципиально невозможно, либо бессмысленно.
Александр Припадчев Ну тогда хэш будет меньше длинны пароля. И тогда будут коллизии
 import hashlib 
import os

def hash_password(password: str, salt_length: int = 16) -> bytes:
# Генерируем случайную соль
salt = os.urandom(salt_length)
salted_password = salt + password.encode()
hasher = hashlib.sha256()
hasher.update(salted_password)
hash_value = hasher.digest()
return hash_value

password = "abcd" # Пароль для хеширования
hashed_password = hash_password(password)
print(hashed_password.hex())
Чем тебя уже готовые хеш функции не устраивают?
АА
А А
8 869
Александр Припадчев Я хочу своё сделать. А готовое изучатьб как оно работает не хочу