Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在java里,可以用公钥、私钥加密,但这里的解密,只能解出公钥加密的结果,用私钥加密的内容,无法公钥解出来。 #4

Open
lqx0 opened this issue Dec 31, 2021 · 1 comment

Comments

@lqx0
Copy link

lqx0 commented Dec 31, 2021

是不是我用的不对?

@lqx0 lqx0 changed the title 在java里,可以用公钥、私钥加密,但这里的解密,只能解出公钥加密的结果,用私钥加密的内容,无法解出来。 在java里,可以用公钥、私钥加密,但这里的解密,只能解出公钥加密的结果,用私钥加密的内容,无法公钥解出来。 Jan 3, 2022
@xiangyuecn
Copy link
Owner

已经过了很久了哈,正常情况下是不允许进行私钥加密的;现在最新版1.6已提供了这个支持。

Java的私钥加密 cipher.init(Cipher.ENCRYPT_MODE, RSAPrivateKey),测试用的是EMSA-PKCS1-v1_5填充方式(用NoPadding填充进行解密可以看到填充内容),和正常的公钥加密还是有区别的,.NET里面得用NoPadding填充方式去加密解密,需先自行使用EMSA-PKCS1-v1_5对数据进行填充。

Java如果是通过私钥RSAPrivateKey里面参数来构造出RSAPublicKey,再去加密,相当于把d当做e,就和正常的公钥加密一致了,和目前版本的RSA-csharp行为一致。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants