как прочитать открытый ключ RSA из файла pem или xml-файла
У меня есть простая вещь: я хочу зашифровать данные с помощью алгоритма AES и ключа, содержащегося в файле pem, как показано на странице: http://msdn.microsoft.com/en-us/library/sb7w85t6.aspx
В этом примере новый ключ шифрования создается при каждом запуске функции. Но мне нужно прочитать этот ключ из файла pem или xml-файла, но я не могу найти способ сделать это.
Есть ли простой способ прочитать ключ из файла pem и преобразовать его в массив байтов (байт [])?
Я использую C# - .net Framework 3.5, и ключ в файле-это открытый ключ RSA нашего партнера.
1 ответ:
В каком XML-файле находится ключ RSA?
.Net
RSACryptoServiceProvider
класс может считывать открытые ключи из XML с помощьюFromXmlString
метод в следующем формате:<RSAKeyValue> <Modulus>3EgNS5XumwoQYU4uvr2OTtlZ4YJWUcGqTAVLQPtzejB7JSiETGdveuH7jGRFi2lNqruRL+SGpr6KJvvijG7wOQheIsJC48lDnS692pZH3rDcWgGuqjwssFKhJ5GSu3Tetrf4DOKVOeTaG5cU0pATV6aDU0Npy0a+5vkU5e3+5jE=</Modulus> <Exponent>AQAB</Exponent> </RSAKeyValue>
EDIT
Насколько я понимаю вашу процедуру, вы используете открытый ключ RSA в качестве симметричного ключа AES. НЕ ДЕЛАЙ ЭТОГО!Это добавляет иллюзию безопасности, не делая ничего для защиты ваших данных. В качестве аналогии, это все равно, что отправить сейф вместе с его ключом, но положить ключ сначала в розовой коробке. Если вы сделаете это таким образом, любой, кто получит открытый ключ RSA , сможет расшифровать ваши данные; закрытый ключ RSA вообще не будет использоваться. Если третья сторона вынуждает вас сделать это таким образом, покажите им этот ответ или спросите любого полу-приличного криптографа.НЕ ПОЗВОЛЯЙТЕ ИМ ДЕЛАТЬ ЭТО ТАКИМ ОБРАЗОМ
То, что вы должны делать, - это создавать случайный ключ AES, шифровать его с помощью открытого ключа RSA, а затем отправлять зашифрованный ключ вместе с зашифрованными данными. Таким образом, данные будут читаться только теми, у кого есть закрытый ключ RSA, поскольку никто другой не сможет расшифровать симметричный ключ AES.