Перейти к содержанию

Вычисление ГОСТ-хэшей через Kernel Crypto API

Определения и ограничения находятся в статьях Стрибог-256, Стрибог-512 и ГОСТ Р 34.11-94. Здесь показано исключительно обращение к реальному Linux Crypto API через AF_ALG.

python3 - <<'PY'
import socket
message='НАЙС.ОС CLOUD: ГОСТ в ядре\n'.encode('utf-8')
for name,n in (('streebog256',32),('streebog512',64),('gosthash94',32)):
    with socket.socket(socket.AF_ALG,socket.SOCK_SEQPACKET) as alg:
        alg.bind(('hash',name))
        conn,_=alg.accept()
        with conn:
            conn.sendall(message)
            print(name,conn.recv(n).hex())
PY

Если алгоритм отсутствует, проверьте версию ядра и /proc/crypto; не обещайте, что он автоматически появляется при установке openssl-gost-engine. Для проверки идентичности входа учитывайте байты UTF-8 и перевод строки. При сверке результатов с OpenSSL различайте библиотечный путь и Crypto API: одинаковый digest ещё не доказывает, что обе программы используют один backend.

AF_ALG · Матрица реализации