Я хотел бы, чтобы сгенерировать пару ключей и просто ввести что-то вроде:Простой rsa-шифрование/дешифрование в .NET?
Rsa.Decrypt(data, privateKey);
Rsa.Encrypt(data, publicKey);
Есть ли простой способ сделать это? Я знаю, что есть что-то вроде RsaCryptoServiceProvider, но для создания подходящего объекта ему нужен XML. Я хотел бы хранить частный/открытый ключ в виде простой строки (не XML), который я помещу в web.config в:
<appSettings>
<add key="MyPublicKey" value"...."/>
<add key="MyrivateKey" value"...."/>
</appSettings>
А потом я буду шифровать web.config, так что все будет в безопасности (IIS справится с этим). Возможно ли это сделать таким образом?
Не шифруйте произвольные данные с помощью RSA. RSA * очень * хрупкий и должен использоваться правильно с правильным заполнением и т. Д. Чтобы зашифровать произвольные данные, вы должны использовать комбинацию RSA и блок-шифр. – CodesInChaos
На вопрос сразу возникают два вопроса: во-первых, как вы планируете безопасно связывать открытый ключ с получателем сообщения? Помните, что криптография с открытым ключом является такой же безопасной, как и система управления ключами. Во-вторых, неужели вам не кажется безумно опасным поставить * закрытый * ключ в известный файл, такой как web.config? Я бы сохранил свой секретный ключ в системе, специально разработанной для хранения конфиденциальных данных, а не просто вставляя ее в web.config. –
@CodeInChaos: другими словами, используйте известный стандарт, такой как синтаксис криптографического сообщения или PGP (с .net, CMS, вероятно, лучше поддерживается). @ Эрик: как для закрытого ключа, если web.config хорошо защищен (и я полагаю, что у большинства клиентов не должно быть доступа к нему), тогда это так же хорошо, как и любое другое. Если вы храните его в надежном месте, вы можете быть защищены от копирования, но вам все равно нужно получить к нему доступ из автоматизированной системы, итак, где вы храните ключ доступа/пароль? (для очень надежных систем вы, конечно, можете использовать HSM или TPM). –