- Это было решено -RSA Шифрование - Шифрование с закрытым ключом
Я понял, как это сделать, и написал краткую статью, описывающую, как я это сделал здесь: http://juzzbott.com/2010/11/signing-and-verifying-data-within-csharp-encrypting-with-private-key-sort-of/
Спасибо to bjarkef & Хенк Холтерман за то, что нашли время, чтобы объяснить это мне основательно.
Приветствия
- Orginal Вопрос -
Я ищу способ шифрования данных с помощью закрытого ключа, и иметь открытый ключ расшифровки. Я знаю, что это вообще НЕ то, что вы хотите от шифрования, поскольку оно будет доступно для чтения любому, у кого есть открытый ключ, но это именно то, что мне нужно.
Мне требуется строка данных для шифрования закрытым ключом, так что только я могу создать зашифрованные данные, и мое приложение прочитало его открытым ключом. Идея заключается в том, чтобы создать файл лицензии для моего приложения, зашифровать данные лицензии и попросить приложение прочитать эти данные. Это предотвратит создание лицензий кем-либо, кроме меня, однако это позволит программе читать его открытым ключом.
Идея этого заключается в том, чтобы контролировать зашифрованные данные, и не заботятся о том, кто может ее прочитать, только кто может ее создать.
Использование RSACryptoServiceProvider, я могу создать свои общедоступные/частные ключи, я могу зашифровать данные с помощью закрытого ключа, однако, когда я перехожу к расшифровке с помощью открытого ключа, я получаю исключение «Key Not Found».
Подписание с помощью RSA также невозможно, так как мне нужно сравнить зашифрованные данные с текстовыми данными, чтобы гарантировать, что лицензия действительна, а подпись только проверяет источник, а не то, что он содержит.
Есть ли какой-либо другой криптопровайдер, который я могу использовать для этого, или какой-либо другой способ чтения сведений о лицензии, посредством чего я сохраняю закрытый ключ и распространяю открытый ключ с моим приложением для проверки лицензии.
Cheers
«Однако, если сообщение имеет цифровую подпись, любое изменение в сообщении после подписи приведет к аннулированию подписи». http://en.wikipedia.org/wiki/Digital_signature#Integrity. Вы уверены, что подписание - это не то, что вам нужно? – steinar
То, что вы описываете, называется «подписание», хотя вы говорите, что это не так. –
Я знаю, что могу подписать строку данных, и это будет проверять подлинность данных, полученных мной, однако я использую эти зашифрованные данные для установки параметров лицензии, одновременно работающих пользователей IE. Поэтому, хотя я могу подписывать исходные данные (содержащие счетчик совпадающих пользователей) и отправлять вместе с ним текстовые данные, нет способа сравнить значения, чтобы убедиться, что они аутентичны. т.е.: я отправляю счетчик одновременного пользователя как обычный текст, а также строку, содержащую зашифрованный счетчик пользователей. То, что я тогда хочу сделать, это unencrypt одновременное значение пользователя и сравнить его с равным текстовым значением. – Juzzbott