.net RSACryptoServiceProvider.Encrypt在java中的模拟

.net RSACryptoServiceProvider.Encrypt在java中的模拟,java,android,.net,rsa,Java,Android,.net,Rsa,我试图将一些代码从.net迁移到JAVA。我用了一个简单的方法: public static byte[] EncryptData(byte[] plainBytes) { RSACryptoServiceProvider publicKeyCrypto = (RSACryptoServiceProvider)platformCertificate.PublicKey.Key; var encrypted = publicKeyCrypto.Encrypt(plainBytes, false

我试图将一些代码从.net迁移到JAVA。我用了一个简单的方法:

public static byte[] EncryptData(byte[] plainBytes)
{
 RSACryptoServiceProvider publicKeyCrypto = (RSACryptoServiceProvider)platformCertificate.PublicKey.Key;
 var encrypted = publicKeyCrypto.Encrypt(plainBytes, false);
 return encrypted;
}
在JAVA中,我使用了:

RSAPublicKey rsaKey = (RSAPublicKey)platformCertificate.getPublicKey();

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
                cipher.init(Cipher.ENCRYPT_MODE, rsaKey);
                byte[] cipherData = cipher.doFinal(plainBytes);
但是java代码结果在服务器端无法正确解密


有人能告诉我我做错了什么吗

似乎java
RSA/ECB/PKCS1Padding
实现与您之前使用的.NET实现不同。如何使用
Cipher.getInstance(“RSA”)(不添加填充)?感谢您的评论。实际上我已经试过了,但也不起作用。这很奇怪。我认为答案应该在表面的某个地方,我只是看不到明显的东西。可以使用不同的图书馆吗?android java可以有不同的合适的库吗?你说的
不工作是什么意思?你期待什么?实际产量是多少?服务器如何尝试解密它?我需要的结果是加密证书中的开放密钥,并将其作为JWT令牌的一部分传递给平台端,平台应在平台端解密密钥,这将是确认,客户端是有效的。我在.net中有完整的工作代码,但在Java中我是一个新手。我试图用java复制它,根据我的研究,问题出在解密部分。因为我只是从.net复制加密的数据,然后在Java代码中传递,一切正常。所以这个问题实际上是可行的,但它以不同的方式加密数据…但是java代码结果在服务器端没有正确解密。。。不是对问题的有用描述。有什么不正确的地方吗?你怎么知道它是不正确的?是否有任何异常被抛出?另外,服务器端的代码在哪里?