5

I'm new to RSA encryption and I've been trying to learn how exactly it works using .Net's System.Security.Cryptography.

    public String Encryption(Byte[] Input, RSAParameters PublicKey)
    {
        RSAC = new RSACryptoServiceProvider();
        RSAC.ImportParameters(PublicKey);
        Byte[] Encrypt = RSAC.Encrypt(Input, false);
        return Convert.ToBase64String(Encrypt);
    }

Using the above code, I get a different encrypted string for the same intput, anytime I restart the application. I would like to know if this is a normal behavior and in case it is not, how to prevent it.

For example the program returns the below string for the input "Hello" :

NopDAF5FRu....

When I restart the application the output for the same input will be :

pPPu8x6....

However when I create new objects for my RSA Encryption class, all objects return the same output.

3
  • Can you show how you've tested the last part of your question: "However when I create new objects for my RSA Encryption class, all objects return the same output." Commented Nov 16, 2013 at 16:28
  • 1
    RSA being random is fine. Passing false as second parameter to Encrypt is probably not fine since v1.5 padding has some serious weaknesses compared to OAEP. Commented Nov 17, 2013 at 5:17
  • Does this answer your question? Why is RSACryptoServiceProvider.Encrypt() output not stable? Commented Sep 30, 2020 at 8:50

1 Answer 1

6

That's totally normal and fine. The data being encrypted is put inside a block that is padded with random values. That's then being encrypted with the public key.

See this SO Q&A for more details.

Sign up to request clarification or add additional context in comments.

3 Comments

I think u r right i just mess up with which key is used in encryption because both can be used , I think yours answer is correct but isnt the private key generated randomly here because he has not intialized it. Then the modulus changes and text encrypted with (public key) changes .
With RSA you encrypt with the public key so only the person in possession of the private key can decrypt it (i.e. many persons can have your public key and encrypt something for you alone). As such the public key is the only thing needed in the above question.
yes u r right . Thanks for clearing doubts (i need to revise my cryptography).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.