Как захешировать строку согласно ГОСТ 34.311, чтобы это была строка в base64? Необходимо захешировать requestId (uuid v4) согласно ГОСТ 34.311, чтобы это была строка в base64 длиной 44 символа (32 байта после декодинга) Пример эталонного хеша: MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI= Либы которые находил в нете почему то не возращают 44 символа

26 Янв 2022 в 19:54
195 +1
0
Ответы
1

Для захеширования строки согласно ГОСТ 34.311 и представления ее в формате base64 длиной 44 символа, можно воспользоваться следующим кодом на Python с использованием библиотеки pycryptodome:

from Crypto.Cipher import gost
import base64
import uuid
# Генерируем uuid v4
requestId = str(uuid.uuid4())
# Преобразуем строку requestId в байты
requestId_bytes = requestId.encode('utf-8')
# Создаем объект шифрования для ГОСТ 34.311
cipher = gost.GOST3411.new()
# Хешируем строку requestId
hash_value = cipher.update(requestId_bytes).digest()
# Преобразуем хеш в base64
hash_base64 = base64.b64encode(hash_value).decode('utf-8')
# Печатаем результат
print(hash_base64)

Этот код должен создавать строку хеша длиной 44 символа в формате base64, используя ГОСТ 34.311 для шифрования строки requestId. Пожалуйста, обратите внимание, что реализация ГОСТ 34.311 может отличаться в разных библиотеках, поэтому убедитесь, что используете платформу, поддерживающую соответствующий стандарт.

16 Апр 2024 в 19:39
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир