views:

262

answers:

1
+2  Q: 

RSA Encryption C#

Hi guys,

I have a class which in C# doing RSA encryption where I used the default RSACryptoServiceProvider class. But I have a concern regarding the following; If you have the word hello for an input and the encrypted string is returned as ABCDE, if you perform another encrypt operation on the input hello, using the same keys (public and private) for the RSA will the output be again ABCDE?

Thanks in advance

+3  A: 

Indeed, RSA is a deterministic encryption algorithm, so given the same keys and plaintext, the same cryptotext will be outputted. RSA is commonly used with a padding scheme to be semantically secure.

This is of course only the general case. I can't vouch for the RSACryptoServiceProvider in C#

Edit:

Of course, your chosen padding scheme needs to be pretty pseudorandom as well. OAEP is one commonly used.

mikek
Worth noting is that due to this, RSA is vulnerable to statistical analysis if an attacker has enough data and the data is not padded. For this reason protocols such as SSH use RSA for authentication and a different algorithm for data encryption.
Simon Lindgren
But is the padding scheme deterministic as well?
Henk Holterman
@Henk Holterman: That would be kind of silly, wouldn't it? :P
mikek
I thought so. But what does that mean for the original question?
Henk Holterman
Pseudorandom padding defends against known plaintext attacks, which is pretty much what the OQ describes. RSA is in fact not considered secure without it, so I can presume that RSACryptoServiceProvider uses padding.Sadly, I'm not a .net-programmer, otherwise I'd open up a sandbox and find out =)
mikek