首页 > 解决方案 > 用于 Java 的 PublicKey.load_pkcs1

问题描述

我正在寻找加载 PEM 公钥来加密一个值。在 Python 中,我只会使用更高级别的函数,例如PublicKey.load_pkcs1. 我无法在任何地方为 Java/Scala 找到这样的功能。

这样可用还是我需要在 Python 实现之后重新实现?


编辑:

内容是:

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

标签: javascalaencryptionpublic-key-encryption

解决方案


完成这项工作非常简单。您只需要像这样从 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)

推荐阅读