Шифрование RSA для C ++ - PullRequest
1 голос
/ 22 ноября 2011

Я работал над преобразованием кода C # в VC ++ (без поддержки .net).Я столкнулся со следующей строкой кода.

RSA.VerifyData(hash, "SHA1", signature)

Как этого добиться?Здесь хэш - зашифрованная информация.Подпись - это информация, полученная с конца Пользователя.Эта функция возвращает логическое значение.Есть ли способ выполнить такую ​​же проверку на char * непосредственно в C ++?

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Проверьте функции CPVerifySignature или CryptVerifySignature - Доступно в CryptoAPI (Windows native).

0 голосов
/ 22 ноября 2011

Есть несколько вариантов, которые вы можете выбрать:

  • Функции криптографии WinAPI . Очевидно, только для Windows, C и WinAPI (я нахожу болезненным и нелогичным работать с ним). CAPI более старый, а CNG более новый (для Vista более новый). Я лично не предлагаю это решение, если у вас нет особых требований (1) .

  • Botan предоставляет широкий спектр функций криптографии, включая проверку подписи RSA. Это мой любимый, у него есть хорошая модель каналов сообщений и фильтров, которая позволяет с легкостью использовать несколько алгоритмов для данных. API-интерфейс немного процедурный (по сути, это вызов begin_message и end_message, охватывающий фактическую запись данных), но я нашел его интуитивно понятным и простым для понимания (это, конечно, просто мнение).

  • Crypto ++ имеет другой стиль API. Я нашел его менее интуитивным, и я всегда выбираю Botan вместо этой библиотеки. API кажется более ортодоксальным, но менее простым. Это не кажется менее способным, чем Ботан, и многие люди действительно рекомендуют его.


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

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