Я разрабатываю приложение Win32 и хочу использовать библиотеку шифрования RSA. Какую библиотеку вы бы порекомендовали?





Я думаю, что OpenSSL - хороший выбор. Он ухоженный, и цена подходящая :)
Он написан на C и сразу же может использоваться в программе на C++.
@Leon, вы можете использовать OpenSSL с приложением GPL, это явная запись в FAQ. openssl.org/support/faq.html#LEGAL2
@Bruno: Из FAQ, который вы связали: «В других системах [кроме Linux / BSD] ситуация менее ясна. Некоторые правообладатели программного обеспечения GPL заявляют, что вы нарушаете их права, если используете OpenSSL, который обычно не включает OpenSSL. ". Википедия утверждает, что OpenSSL несовместим.
Запись в FAQ довольно ясна, она определенно совместима с системами, в которых OpenSSL поставляется по умолчанию, точно так же, как программа GPL может ссылаться на проприетарную libc, скажем, в AIX. Это может быть более серым в других системах, невозможно узнать наверняка, пока по этому поводу не будет принято решение суда.
Если вы используете Win32, почему бы вам просто не использовать встроенный крипто-API Win32?
Вот небольшой пример того, как это работает на практике:
http://www.codeproject.com/KB/security/EncryptionCryptoAPI.aspx
С одной стороны, это не похоже на C++.
Win API находится на языке C, который сразу же можно использовать в программе на C++.
Ага. Если вы предпочитаете интерфейс C++, напишите себе оболочку вокруг него. В любом случае это может быть хорошей идеей на случай, если вы позже захотите изменить API.
Потому что это очень небезопасно, учитывая тот факт, что никто больше не доверяет Microsoft шифрование файлов.
Истинный. Ответ был дан до обвала криптовалюты Сноудена и АНБ.
В качестве альтернативы рассмотрите LibTomCrypt (https://github.com/libtom/libtomcrypt)
Он написан на C и сразу же может использоваться в программе на C++.
ссылка мертва
@NicolasHolthaus: спасибо, я обновился до рабочей ссылки.
Я использую следующую библиотеку:
http://www.efgh.com/software/rsa.htm
Это общественное достояние, компактное, автономное и хорошо работает.
Эта библиотека не использует отступы. Это существенное упущение.
Правда, я улучшил его, добавив это. Проблема в том, что я потерял код :(. Хотя это было не так уж сложно добавить ...
Он использует 16-битные целые числа в качестве примитивных элементов. Вероятно, это довольно медленно на современном оборудовании. Кроме того, если я правильно понимаю, он использует наивную реализацию для операции pow / mod. Существуют более быстрые алгоритмы ...
Крипто ++ - у них есть проверенные NIST FIPS dll для MSVC 6, 7.1 и 8 поверх обычных самодельных пакетов с исходным кодом.
Нет никаких сомнений в том, что знак одобрения NIST очень много значит. Шифрование - это не одна из тех вещей, с которыми вы хотите возиться - вы ДОЛЖНЫ быть уверены, что оно реализовано правильно и не имеет дыр в безопасности.
Другая альтернатива - libbeecrypt. Очень зрелый продукт с реализациями ассемблера на многих платформах.
Я использовал OpenSSL в прошлом и нашел его отличной библиотекой для криптографических API, включая AES, RSA, 3DES.
Может быть, Ботан - альтернатива? Это библиотека C++ с лицензией BSD, которая поддерживает алгоритмы RSA.
Я бы порекомендовал библиотеку Miracl https://certivox.com/solutions/miracl-crypto-sdk/, но цена высока.
Помните, что OpenSSL не совместим с GPL.