Хорошо, я нашел то, что искал, и я думаю, что он лучше, чем OpenSSL (по крайней мере, для моих целей).
Есть две библиотеки:
libtomcrypt , который реализует несколько шифров (включая RSA), и libtommath , который реализует арифметику bignum. Обе библиотеки находятся в свободном доступе, их легко взломать / изменить, и они имеют более простой интерфейс программирования, чем OpenSSL, и (намного) лучшую документацию, чем OpenSSL.
В отличие от старого rsa-кода публичного домена, который я обнаружил до , libtomcrypt может очень быстро генерировать новые ключи, может импортировать ключи, сгенерированные OpenSSL, и поддерживает заполнение. Еще одна полезная вещь в libtomcrypt заключается в том, что она не имеет дополнительных зависимостей (например, OpenSSL для Windows требует gdi32) и меньше, чем OpenSSL.
В конце концов, я решил использовать RSA для шифрования, потому что (для меня это выглядит так) нет действительно асимметричных альтернатив. Похоже, что большинство других шифров (элгамальные, эллиптические кривые) больше подходят для симметричного шифрования, когда сеансовый ключ шифруется асимметрично. Который не подходит для меня. Такие шифры подходят для сетевых коммуникаций / сеансовых ключей, но было бы нецелесообразно использовать их для статической неизменности данных на диске.
Что касается «медленного RSA», я немного изменил формат архива, так что теперь только небольшой кусок данных асимметрично шифруется. Невозможность расшифровки этого чанка сделает чтение индекса архива совершенно очень трудным, если не невозможным. Кроме того, я должен признать, что медлительность RSA была частично неправильным впечатлением, которое дал старый код , который я пытался использовать ранее.
Что значит, вопрос решен. Решение - RSA + libtomcrypt. RSA - потому что существует не так много альтернатив RSA и libtomcrypt - потому что он небольшой и общедоступный.