2010-03-14 4 views
3

У меня есть класс, который на C# делает RSA-шифрование, где я использовал класс RSACryptoServiceProvider по умолчанию. Но я беспокоюсь о следующем: Если у вас есть слово hello для ввода и зашифрованная строка возвращается как ABCDE, если вы выполняете другую операцию шифрования во входном приветствии, используя те же ключи (общедоступные и частные) для RSA, будет ли снова выводиться ABCDE?RSA Encryption C#

Заранее спасибо

+0

Райан, не было ли чего-то недостающего в моем ответе? – mikek

ответ

5

Действительно, RSA является алгоритмом шифрования детерминированным, так дали одинаковые ключи и открытый текст, то же cryptotext будет выводиться. RSA обычно используется с использованием схемы заполнения, которая должна быть семантически безопасной.

Это, конечно, только общий случай. Я не могу ручаться за RSACryptoServiceProvider в C#

Edit:

Конечно, ваша выбранная схема обивки должна быть довольно псевдослучайным, а также. OAEP обычно используется.

+0

Стоит отметить, что из-за этого RSA уязвим для статистического анализа, если у нападающего достаточно данных, а данные не заполняются. По этой причине протоколы, такие как SSH, используют RSA для аутентификации и другой алгоритм шифрования данных. –

+0

Но также является ли детерминистическая схема прокладки? –

+0

@ Хенк Холтерман: Это было бы глупо, не так ли? : P – mikek