PublicKey.load_pkcs1 for Java

PublicKey.load_pkcs1 for Java,java,scala,encryption,public-key-encryption,Java,Scala,Encryption,Public Key Encryption,我希望加载一个PEM公钥来加密一个值。在Python中,我只会使用更高级别的函数,如PublicKey.load\u pkcs1。我在任何地方都找不到Java/Scala的这样一个函数 这是可用的还是需要在Python实现之后重新实现 编辑: 内容是: -----BEGIN RSA PUBLIC KEY----- ... -----END RSA PUBLIC KEY----- 做这件事很简单。 您只需要从Scala调用Python脚本,如下所示: val encryptedValue: S

我希望加载一个PEM公钥来加密一个值。在Python中,我只会使用更高级别的函数,如
PublicKey.load\u pkcs1
。我在任何地方都找不到Java/Scala的这样一个函数

这是可用的还是需要在Python实现之后重新实现


编辑:

内容是:

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----

做这件事很简单。 您只需要从Scala调用Python脚本,如下所示:

val encryptedValue: String = Seq("python3", "foobar.py", pemKey, value).!!
在Python中,您只需通过以下方式实现PKCS1读取:

import base64
import rsa
import sys

pemKey = sys.argv[1]
value = sys.argv[2]
pk = rsa.PublicKey.load_pkcs1(bytes(pemKey, 'utf-8'))
encrypted = base64.b64encode(
    rsa.encrypt(value.encode('utf-8'), pk)).decode('utf-8')
print(encrypted)

您需要阅读Java加密库。也许谷歌“java load pem to encrypt”?我这样做了,但我可能需要比文档提供的更多的信息/指导。这有什么帮助?“PEM公钥”不够详细,因为PEM不是单一格式。例如,第一行说什么(通常是------开始------).Ok,正如您所指出的,这实际上是PKCS 1公钥。不幸的是,Java只能使用其X509EncodedKeySpec类处理不同格式的公钥。如果您使用Bouncycastle库,它可以通过PEMReader实例读取这些公钥。否则,这里有答案,以便显示在没有第三个实例的情况下读取这些公钥所需的步骤-党的图书馆。