What is "A device attached to the system is not functioning" error in RSA encryption?

Viewed 248

Using RSA and want to encrypt with the public key in JAVA and using public and private keys to decrypt in c#.

Encryption works fine in java but decryption in c# has this error: "A device attached to the system is not functioning", What does it mean?

Java encryption method:

static String publickey = "2rRVVVFJRbH/wAPDtnwZwu+nxU+AZ6uXxh/sW+AMCBogg7vndZsnRiHoLttYYPqOyOhfgaBOQogrIfrKL4lipK4m52SBzw/FfcM9DsKs/rYR83tBLiIAfgdnVjF27tZID+HJMFTiI30mALjr7+tfp+2lIACXA1RIKTk7S9pDmX8=";

static String Encrypt(String encodedString) {
      try {
        byte[] modulusBytes = Base64.getDecoder().decode(publickey);
        byte[] exponentBytes = Base64.getDecoder().decode("AQAB");
        BigInteger modulus = new BigInteger(1, modulusBytes);
        BigInteger exponent = new BigInteger(1, exponentBytes);

        RSAPublicKeySpec rsaPubKey = new RSAPublicKeySpec(modulus, exponent);
        KeyFactory fact = KeyFactory.getInstance("RSA");
        PublicKey pubKey = fact.generatePublic(rsaPubKey);

        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, pubKey);

        byte[] plainBytes = new String("big kitty dancing").getBytes("UTF-8");
        byte[] cipherData = cipher.doFinal(plainBytes);
        String encryptedString = Base64.getEncoder().encodeToString(cipherData);

        return encryptedString;
    } catch (InvalidKeySpecException | NoSuchAlgorithmException | NoSuchPaddingException |
            InvalidKeyException | BadPaddingException | IllegalBlockSizeException | UnsupportedEncodingException err) {
    }
    return "Error";
}

C# decryption method:

   static string Decrypt()
    {
        const int PROVIDER_RSA_FULL = 1;
        const string CONTAINER_NAME = "Tracker";

        CspParameters cspParams;
        cspParams = new CspParameters(PROVIDER_RSA_FULL);
        cspParams.KeyContainerName = CONTAINER_NAME;
        RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider(cspParams);
        //string str = rsa1.ToXmlString(true);


        rsa1.FromXmlString("<RSAKeyValue><Modulus>2rRVVVFJRbH/wAPDtnwZwu+nxU+AZ6uXxh/sW+AMCBogg7vndZsnRiHoLttYYPqOyOhfgaBOQogrIfrKL4lipK4m52SBzw/FfcM9DsKs/rYR83tBLiIAfgdnVjF27tZID+HJMFTiI30mALjr7+tfp+2lIACXA1RIKTk7S9pDmX8=</Modulus><Exponent>AQAB</Exponent><P>+lXMCEwIN/7+eMpBrq87kQppxu3jJBTwztGTfXNaPUTx+A6uqRwug5oHBbSpYXKNDNCBzVm/0VxB3bo4FJx+ZQ==</P><Q>yasOGaJaE9xlF9T2xRuKeG9ZxCiyjhYaYB/mbtL+SIbtkRLi/AxaU4g2Il/UxhxhSXArKxIzV28zktispPJx1Q==</Q><DP>ueRgQIEFUV+fY979a1RgrVHIPpqEI1URhOMH3Q59oiXCcOumM5njyIHmWQxRAzXnG+7xlKXi1PrnRll0L4oOKQ==</DP><DQ>dfEMNgG1HJhwpxdtmqkYuoakwQvsIRzcIAuIAJh1DoWaupWJGk8/JEstHb1d+t7uJrzrAi2KyT/HscH2diE0YQ==</DQ><InverseQ>YoYF9PF6FiC0YngVeaC/eqt/ea8wMYNN3YO1LuzWpcy2exPRj2U0ZbWMvHXMUb4ea2qmhZGx1QlK4ULAuWKpXQ==</InverseQ><D>g1WAWI4pEK9TA7CA2Yyy/2FzzNiu0uQCuE2TZYRNiomo96KQXpxwqAzZLw+VDXfJMypwDMAVZe/SqzSJnFEtZxjdxaEo3VLcZ1mnbIL0vS7D6iFeYutF9kF231165qGd3k2tgymNMMpY7oYKjS11Y6JqWDU0WE5hjS2X35iG6mE=</D></RSAKeyValue>");

        string data2Decrypt = "pt0DMKQM34rIp/aw64NBRhj8HZlp31i3Nu/9SP6o2Iwl9plu8k1TDbe04cQRkIDx/h6hsAKM0j13HdauidnEEvtm0yp9WrOMGut2XJUTUxWt5/y4bosm06tYtfw5HnlNHMMBtY22caCppwfdOJbiwp9rwEtWV9tXHU7VMenlVuw=";

        byte[] encyrptedBytes = Convert.FromBase64String(data2Decrypt);
        //Error occured in this line
        byte[] plain = rsa1.Decrypt(encyrptedBytes, false); 
        string decryptedString = System.Text.Encoding.UTF8.GetString(plain);
        return decryptedString;
    }

UPDATED:

StackTrace:

   at
 System.Security.Cryptography.CryptographicException
 .ThrowCryptographicException(Int32 hr)
   at    System.Security.Cryptography.RSACryptoServiceProvider.DecryptKey(SafeKeyHandle
 pKeyContext, Byte[] pbEncryptedKey, Int32 cbEncryptedKey, Boolean fOAEP, ObjectHandleOnStack ohRetDecryptedKey)
   at System.Security.Cryptography.RSACryptoServiceProvider.Decrypt(Byte[] 
rgb, Boolean fOAEP)
  at CJSecurity.Program.Decrypt() in C:\CJSecurity\CJSecurity\Program.cs
1 Answers

The private key is not correct. I assume the key generation failed with some strange error. I checked your private key using openssl, and it says the n does not equal to p * q.

$rsa1 = New-Object System.Security.Cryptography.RSACryptoServiceProvider
$rsa1.FromXmlString("<RSAKeyValue><Modulus>2rRVVVFJRbH/wAPDtnwZwu+nxU+AZ6uXxh/sW+AMCBogg7vndZsnRiHoLttYYPqOyOhfgaBOQogrIfrKL4lipK4m52SBzw/FfcM9DsKs/rYR83tBLiIAfgdnVjF27tZID+HJMFTiI30mALjr7+tfp+2lIACXA1RIKTk7S9pDmX8=</Modulus><Exponent>AQAB</Exponent><P>+lXMCEwIN/7+eMpBrq87kQppxu3jJBTwztGTfXNaPUTx+A6uqRwug5oHBbSpYXKNDNCBzVm/0VxB3bo4FJx+ZQ==</P><Q>yasOGaJaE9xlF9T2xRuKeG9ZxCiyjhYaYB/mbtL+SIbtkRLi/AxaU4g2Il/UxhxhSXArKxIzV28zktispPJx1Q==</Q><DP>ueRgQIEFUV+fY979a1RgrVHIPpqEI1URhOMH3Q59oiXCcOumM5njyIHmWQxRAzXnG+7xlKXi1PrnRll0L4oOKQ==</DP><DQ>dfEMNgG1HJhwpxdtmqkYuoakwQvsIRzcIAuIAJh1DoWaupWJGk8/JEstHb1d+t7uJrzrAi2KyT/HscH2diE0YQ==</DQ><InverseQ>YoYF9PF6FiC0YngVeaC/eqt/ea8wMYNN3YO1LuzWpcy2exPRj2U0ZbWMvHXMUb4ea2qmhZGx1QlK4ULAuWKpXQ==</InverseQ><D>g1WAWI4pEK9TA7CA2Yyy/2FzzNiu0uQCuE2TZYRNiomo96KQXpxwqAzZLw+VDXfJMypwDMAVZe/SqzSJnFEtZxjdxaEo3VLcZ1mnbIL0vS7D6iFeYutF9kF231165qGd3k2tgymNMMpY7oYKjS11Y6JqWDU0WE5hjS2X35iG6mE=</D></RSAKeyValue>")
[System.IO.File]::WriteAllBytes('rsa1.der',  $rsa1.ExportPkcs8PrivateKey())
& 'C:\Program Files\OpenSSL-Win64\bin\openssl.exe' rsa -check -inform DER -in rsa1.der

Here is the output from the openssl command:

RSA key error: n does not equal p q
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDatFVVUUlFsf/AA8O2fBnC76fFT4Bnq5fGH+xb4AwIGiCDu+d1
mydGIegu21hg+o7I6F+BoE5CiCsh+soviWKkribnZIHPD8V9wz0Owqz+thHze0Eu
IgB+B2dWMXbu1kgP4ckwVOIjfSYAuOvv61+n7aUgAJcDVEgpOTtL2kOZfwIDAQAB
AoGBAINVgFiOKRCvUwOwgNmMsv9hc8zYrtLkArhNk2WETYqJqPeikF6ccKgM2S8P
lQ13yTMqcAzAFWXv0qs0iZxRLWcY3cWhKN1S3GdZp2yC9L0uw+ohXmLrRfZBdt9d
euahnd5NrYMpjTDKWO6GCo0tdWOialg1NFhOYY0tl9+YhuphAkEA+lXMCEwIN/7+
eMpBrq87kQppxu3jJBTwztGTfXNaPUTx+A6uqRwug5oHBbSpYXKNDNCBzVm/0VxB
3bo4FJx+ZQJBAMmrDhmiWhPcZRfU9sUbinhvWcQoso4WGmAf5m7S/kiG7ZES4vwM
WlOINiJf1MYcYUlwKysSM1dvM5LYrKTycdUCQQC55GBAgQVRX59j3v1rVGCtUcg+
moQjVRGE4wfdDn2iJcJw66YzmePIgeZZDFEDNecb7vGUpeLU+udGWXQvig4pAkB1
8Qw2AbUcmHCnF22aqRi6hqTBC+whHNwgC4gAmHUOhZq6lYkaTz8kSy0dvV363u4m
vOsCLYrJP8exwfZ2ITRhAkBihgX08XoWILRieBV5oL96q395rzAxg03dg7Uu7Nal
zLZ7E9GPZTRltYy8dcxRvh5raqaFkbHVCUrhQsC5Yqld
-----END RSA PRIVATE KEY-----
Related