Java “什么是”呢;连接到系统的设备不工作“;RSA加密中的错误?

Java “什么是”呢;连接到系统的设备不工作“;RSA加密中的错误?,java,c#,encryption,public-key-encryption,encryption-asymmetric,Java,C#,Encryption,Public Key Encryption,Encryption Asymmetric,使用RSA并希望在JAVA中使用公钥进行加密,在c#中使用公钥和私钥进行解密 在java中加密工作正常,但在c#中解密有以下错误: “连接到系统的设备不工作”,这是什么意思 Java加密方法: static String publickey = "2rRVVVFJRbH/wAPDtnwZwu+nxU+AZ6uXxh/sW+AMCBogg7vndZsnRiHoLttYYPqOyOhfgaBOQogrIfrKL4lipK4m52SBzw/FfcM9DsKs/rYR83tBLiIAfgdnV

使用RSA并希望在JAVA中使用公钥进行加密,在c#中使用公钥和私钥进行解密

在java中加密工作正常,但在c#中解密有以下错误: “连接到系统的设备不工作”,这是什么意思

Java加密方法:

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";
}
   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;
    }
C#解密方法:

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";
}
   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;
    }

你能提供完整的堆栈跟踪吗?您重新创建
PROVIDER\u RSA\u FULL
有点奇怪,因为它已经定义好了,我不得不查找它,结果发现常量的名称相同。我假设没有其他名为“跟踪器”的容器?您是否使用类似智能卡硬件安全模块(HSM)的东西?您的系统在尝试访问HSM时可能会遇到错误。@AxelKemper否我不知道您是否可以提供完整的堆栈跟踪?您重新创建
PROVIDER\u RSA\u FULL
有点奇怪,因为它已经定义好了,我不得不查找它,结果发现常量的名称相同。我假设没有其他名为“跟踪器”的容器?您是否使用类似智能卡硬件安全模块(HSM)的东西?您的系统在尝试访问HSM时可能会遇到错误。@AxelKemper否我不知道