
Шифрование на основе SHA-256 (часть 2)
Aarrtteemm 30 минут назад Шифрование на основе SHA-256 (часть 2) Средний 3 мин 326 Python * IT-инфраструктура * Open source * ВступлениеСтатья частично является продолжениям идеи создания своего алгоритма шифрования на...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: Aarrtteemm 30 минут назад Шифрование на основе SHA-256 (часть 2) Средний 3 мин 326 Python * IT-инфраструктура * Open source * ВступлениеСтатья частично является продолжениям идеи создания своего алгоритма шифрования на основе хеш функций из первой части. Большинство практических схем шифрования строятся вокруг проверенных стандартов вроде AES или RSA. В этом материале мы разберем альтернативный, исследовательский подход: шифрование, где для каждого байта сообщения подбирается собственное значение salt на основе SHA-256.
Главная особенность алгоритма в том, что для шифрования используется хеш функция. Цель статьи — интуитивно и пошагово объяснить механику новой версии алгоритма, чтобы вы могли оценить его сильные и слабые стороны. Идея алгоритмаАлгоритм обрабатывает сообщение как последовательность байтов.
Технические детали
Для каждого байта используется текущее состояние ключа. Из ключа вычисляется хэш, а его первый байт играет роль маски XOR. Дальше происходит ключевой шаг, алгоритм подбирает число salt.
Перебор продолжается, пока первый байт полученного хэша не совпадет с целевым значением, которое было рассчитано из исходного байта и маски XOR. Найденный salt и сохраняется в шифротекст. После этого ключ обновляется (снова через SHA-256), и следующий байт обрабатывается уже с новым ключом.
Каждый шаг зависит от предыдущего состояния. Из секретной фразы получаем стартовый ключБерем любую секретную фразу произвольной длины (лучше конечно не меньше 16 символов) и хэшируем ее через SHA-256. Результат всегда 32 байта — это и есть стартовый ключ алгоритма.
Отраслевые последствия
import hashlib secret_phrase = "my very secret passphrase" secret_seed = secret_phrase. encode("utf-8 initial_key = hashlib. Готовим данные для шифрованияАлгоритм работает с байтами, поэтому сообщение тоже переводим в bytes.
" message_bytes = message. Шифруем один байтДля каждого байта:берем маску из текущего ключа (первый байт SHA-256 от ключа);считаем целевое значение через XOR;подбираем salt перебором, пока первый байт SHA-256 от key + salt не совпадет с целью, другими словами, не будет равно xor_target (single_byte ^ mask_byte). def encrypt_byte(single_byte: int, current_key: bytes) -> tuple: mask = hashlib.
digest() mask_byte = mask xor_target = single_byte ^ mask_byte salt = 0 while True: salt_bytes = salt. to_bytes(4, byteorder="big attempt_hash = hashlib. sha256(current_key + salt_bytes).
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





