Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RSA加密/解密问题:来自.Net的加密文本未在Java中解密_Java_.net_Rsa_Encryption - Fatal编程技术网

RSA加密/解密问题:来自.Net的加密文本未在Java中解密

RSA加密/解密问题:来自.Net的加密文本未在Java中解密,java,.net,rsa,encryption,Java,.net,Rsa,Encryption,我在Java中面临解密问题。以下是遇到的错误: javax.crypto.BadPaddingException: Blocktype mismatch: -127 at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:311) at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:255) 该文本在.Net中使用以下代码进行加密: public string Encr

我在Java中面临解密问题。以下是遇到的错误:

javax.crypto.BadPaddingException: Blocktype mismatch: -127
    at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:311)
    at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:255)
该文本在.Net中使用以下代码进行加密:

public string EncryptString( string inputString, int dwKeySize, string xmlString )
        {
            RSACryptoServiceProvider rsaCryptoServiceProvider = new RSACryptoServiceProvider( dwKeySize );
            rsaCryptoServiceProvider.FromXmlString( xmlString );
            int keySize = dwKeySize / 8;
            byte[] bytes = Encoding.UTF32.GetBytes( inputString );
            int maxLength = keySize - 42;
            int dataLength = bytes.Length;
            int iterations = dataLength / maxLength;
            StringBuilder stringBuilder = new StringBuilder();
            for( int i = 0; i <= iterations; i++ )
            {
                byte[] tempBytes = new byte[ ( dataLength - maxLength * i > maxLength ) ? maxLength : dataLength - maxLength * i ];
                Buffer.BlockCopy( bytes, maxLength * i, tempBytes, 0, tempBytes.Length );
                byte[] encryptedBytes = rsaCryptoServiceProvider.Encrypt( tempBytes, true );

                Array.Reverse( encryptedBytes );
                stringBuilder.Append( Convert.ToBase64String( encryptedBytes ) );               
            }           
            return stringBuilder.ToString();
        }

我是不是遗漏了什么?如何进行双向加密/解密?

您的C应用程序正在使用OAEP padding PKSC v2,而java正在使用PKSC v1.5。请尝试将您的C代码更改为:

ptedBytes = rsaCryptoServiceProvider.Encrypt( tempBytes, false );
这可能有助于:


正如您所说,我更改了代码,但仍然没有得到正确的输出。如果文本是ABC,我将解密字符串作为A3未知字符B3未知字符C3未知字符。我是不是漏掉了什么?现在好像断了链接。
ptedBytes = rsaCryptoServiceProvider.Encrypt( tempBytes, false );