.net RSACryptoServiceProvider.Encrypt在java中的模拟
我试图将一些代码从.net迁移到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
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代码结果在服务器端没有正确解密。。。不是对问题的有用描述。有什么不正确的地方吗?你怎么知道它是不正确的?是否有任何异常被抛出?另外,服务器端的代码在哪里?