C / C ++ шифрование / расшифровка с открытым ключом

StackOverflow https://stackoverflow.com/questions/4124182

  •  29-09-2019
  •  | 
  •  

Вопрос

Я ищу две функции концептуально похожи на эти:

// returns the encrypted text
string encrypt( string public_key, string pass_phrase, string text );
// returns the original text
string decrypt( string private_key, string pass_phrase, string encrypted_text );

куда string может быть А. char*, А. std::string или что-то легко конвертируемое для тех двух. И где public_key и private_key Может быть в основном все, от ключей, сгенерированных с некоторыми командами (GPG / SSL вещими или что-то еще), к ключам, сгенерированными с другими просто Функции.

Я посмотрел в несколько библиотек криптографии (libgcrypt, libgpgme, openssl ...), но вообще не будет легко реализовывать такие функции с теми библиотеками: они требуют нестепенных знаний об асимметричном шифровании и многое кода.

Во всяком случае, эта задача не кажется необычным. Как я могу реализовать две функции выше?

Это было полезно?

Решение

К сожалению, шифрование всегда требует ненациональных знаний вовлеченных алгоритмов. Трудно получить правильно. «Справочник по прикладной криптографии» - это относительно читаемое руководство по различным алгоритмам, доступным, так что это, вероятно, стоит выглядеть.

Вы также можете попробовать крипты. Отказ Похоже, имеет хорошо слоитый дизайн, который дает вам разумные значения по умолчанию для многих параметров, чтобы вы могли, надеюсь, начнут начать без необходимости слишком беспокоиться о деталях.

Другие советы

Когда кто-то просит простое шифрование, я могу только рекомендовать Keyczar..

Он не только предоставляет чистый интерфейс на нескольких языках (которые могут использовать одни и те же клавиши), но и механизмы для обработки ключевых вращений и тому подобное.

И, конечно же, безопасные значения по умолчанию для алгоритмов, реализованных таким образом, чтобы вам не нужно беспокоиться о технических деталях.

Действительно, лучшая легкая и безопасная комбинация, которую я видел до сих пор.

Предполагая, что вам не нужно что-то платформу агностическую, криптографию Следующее поколение (CNG) является относительно новой криптографической API на Windows и удивительно интуитивно понятно и легко в использовании. Я написал статью, которая включает примеры всех основных криптографических операций, которые вам могут потребоваться в типичных приложениях. Код выборки для статьи также обеспечивает полный рабочий пример для этих операций с использованием компилятора Visual C ++.

http://msdn.microsoft.com/en-us/magazine/cc163389.aspx.

Для лечения общественных и частных ключей в качестве строк вы можете просто использовать Base64 или аналогичную кодировку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top