2010-11-20 3 views
1

Как создать произвольные общедоступные и закрытые ключи RSA (RSAParameters) с использованием класса RSACryptoServiceProvider? Каждый раз, когда я создаю новый экземпляр RSACryptoServiceProvider, я в конечном итоге экспортирую те же ключи.Генерировать случайные ключи RSA с помощью RSACryptoServiceProvider

Благодаря

+1

Показать код, не заставит нас гадать. –

ответ

4

Я сделал некоторые испытания на следующий код, и экспортируемые параметры всегда различны:

var rsaAlgo1 = new RSACryptoServiceProvider(); 
var rsaAlgo2 = new RSACryptoServiceProvider(); 

var xml1 = rsaAlgo1.ToXmlString(true); 
var xml2 = rsaAlgo2.ToXmlString(true); 

if (xml1 != xml2) 
{ 
    // it always goes here... 
} 
+1

Этот код работает, но это очень опасный стиль. Метод 'Create()', который вы вызываете, на самом деле является статическим методом в абстрактном классе RSA (суперкласс для 'RSACryptoServiceProvider') и создает экземпляр стандартной реализации' RSA' -class. В большинстве систем это будет «RSACryptoServiceProvider», но не на всех. Лучшим стилем будет либо «var rsa = RSA.Create()», либо «var rsa = new RSACryptoServiceProvider». –

+0

@Rasmus: вы отредактировано соответствующим образом, спасибо;) – digEmAll

+1

Обратите внимание, что для практического использования вы должны указать размер ключа (например, 2048 b его) вместо использования конструктора по умолчанию. – CodesInChaos

0

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

var rsa = new RSACryptoServiceProvider(); 
var rsaParams = rsa.ExportParameters(true); 

Однако вы должны отметить, что клавиша Exponent может быть такой же, и часто бывает 65537 (0x010001)

«Выберите целое число е такое, что 1 < < е φ (п) и НОД (е, φ (N)) = 1; е. e и φ (n) взаимно просты. e выпущен как показатель открытого ключа. e с коротким битом и небольшим весом Хэмминга приводит к более эффективному шифрованию - чаще всего 216 + 1 = 65,537. Тем не менее, гораздо меньшие значения е (такие как 3) было показано, что менее безопасным в некоторых ситуациях.» RSA wiki

Смежные вопросы