Итак, давайте посмотрим, что же получилось. Сразу предупреждаю, что корректность реализаций не проверял.
Кузнечик
- Официальная реализация ТК 26
- Реализация Маркку Сааринена (не оптимизированная )
- Реализация Романа Олейникова (не оптимизированная )
- Реализация, оптимизированная по 8/16/32/64/128-битные архитектуры
- Реализация Эрика Филиоля (не оптимизированная )
- Плагин для KeePass, реализующий Кузнечик
- JS-реализация проекта WebCrypto
- Ассемблерная реализация (UPD от omegicus )
- C++ реализация
Стрибог
- Знаменитая реализация Дегтярева
- Вычисление хэш-суммы Стрибог на Qt (на основе Дегтяревской)
- Реализация Казимирова (C и sage)
- Ассемблерная от omegicus (не оптимизированная)
- Реализация в libgcrypt
- Реализация на Java
- Чистый C
- Реализация в Gostcrypt — форке Truecrypt
- PHP реализация Колесникова (развитие Дегтяревской)
- Криптовалюта SibCoin на Стрибоге (Криптовалюта на Стрибоге, Карл!)
- JS-реализация проекта WebCrypto
- Реализация на Python
- C++ реализация
Подпись
- JS-реализация проекта WebCrypto
- Реализация на Python
- OpenSSL
- Реализация в libgcrypt
- Реализация от Ivan_83
Если указал не все — пишите добавлю.
Комментарии (9)
Ivan_83
15.12.2015 01:18+1Мою реализацию ЭЦП забыли:
http://netlab.linkpc.net/download/software/SDK/core/include/ecdsa.h
http://netlab.linkpc.net/download/software/SDK/core/include/math_ec.h
http://netlab.linkpc.net/download/software/SDK/core/include/math_bn.h
Ещё в LibreSSL вроде как обратно добавили гостовские алгоритмы.
SamDark:
Так се реализация: чтение по одному байту = просадка производительности, ИМХО, в сравнении с чтением в 4 байта в регистр и дальше работой с масками/сдвигами, и собственно форматирование, оформление, отсутствие коментов…
По работе делал?
Я видел по лучше.
Вот весьма оригинальный алгоритм, в котором разворачивают таблицу перестановок: https://github.com/sftp/gost28147/blob/master/gost28147.h
в итоге она занимает не 128 байт а 4 кб и не влезает в кеш линии, зато все доп битовые операции практически исключены.
Вот чуть более каноничный вариант: https://github.com/yaruson/GostPlugin
при этом алгоритм реализован достаточно понятно, взято у: http://habrahabr.ru/post/256843/
Есть ещё: http://habrahabr.ru/post/81032/ но код читать трудно и алгоритм трудно понять из него.
lumag
15.12.2015 08:41LibreSSL.
В куске про ЭЦП надо уточнять, поддерживается ли версия -2012 года, с размером ключа 512 бит.
Про 28147-89/Р 34.11-94. Их много кто поддерживает, но не много где есть возможность использовать разные S-BOX.
m08pvv
15.12.2015 09:01+1Насколько они соответствуют исходным алгоритмам по криптостойкости?
Было бы интересно посмотреть криптоанализ, а также анализ на типичные ошибки при реализации криптографии (например, уязвимость к тайминг атакам).
Disasm
15.12.2015 13:04+1Все подписались?
https://habrastorage.org/files/084/c25/36f/084c2536fe7044cf83f19fbcaaf45cd0.png
omegicus
в копилку по Кузнечику http://omegicus.org/get/gost14.zip
(инструмент чисто для себя делал, так что AS IS)