Josh
Josh

Reputation: 570

C# RSA with no padding

I'm busy trying to port Java code that looks like this

        Cipher rsa = Cipher.getInstance("RSA/ECB/nopadding");
        rsa.init(Cipher.DECRYPT_MODE, RSAPrivateKey);
        decryptedData = rsa.doFinal(data, 0, 128);

to C#, but as it seems the RSACryptoServiceProvider, forces you to either use OEAP or PKCS1 padding. I know no padding isn't secure, but in this case Im working with a closed source client, so I can't do anything about that. Is there any way around this padding issue?

Upvotes: 4

Views: 4481

Answers (2)

Donatello Turtle
Donatello Turtle

Reputation: 81

BouncyCastle will help us to make nopadding RSA encryption.

public string RsaEncryptWithPublic(string clearText, string publicKey)
    {
        //  analogue of Java:
        //  Cipher rsa = Cipher.getInstance("RSA/ECB/nopadding");
        try
        {
            var bytesToEncrypt = Encoding.ASCII.GetBytes(clearText);

            var encryptEngine = new RsaEngine(); // new Pkcs1Encoding (new RsaEngine());


            using (var txtreader = new StringReader("-----BEGIN PUBLIC KEY-----\n" + publicKey+ "\n-----END PUBLIC KEY-----"))
            {
                var keyParameter = (AsymmetricKeyParameter)new PemReader(txtreader).ReadObject();

                encryptEngine.Init(true, keyParameter);
            }

            var encrypted = Convert.ToBase64String(encryptEngine.ProcessBlock(bytesToEncrypt, 0, bytesToEncrypt.Length));
            return encrypted;
        }
        catch 
        {

            return "";
        }
    }

also dont forget to put it at top:

using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.OpenSsl;

Upvotes: 3

James Black
James Black

Reputation: 41858

You might want to get the code from BouncyCastle, http://www.bouncycastle.org/csharp/, and modify the code from the link below, and ensure that it can use the encryption that you list above.

http://www.java2s.com/Code/Java/Security/Whatisinbouncycastlebouncycastle.htm

Upvotes: 2

Related Questions