在哪里可以找到 "load_der_public_key" 在 java 中的相同实现

Where to find same implementation for "load_der_public_key" in java

Python 有一个非常好的密码学库

例如“load_der_public_key”https://cryptography.io/en/latest/hazmat/primitives/asymmetric/serialization/

python

中的代码
from cryptography.hazmat.primitives.serialization import load_der_public_key

der_public_key = base64.b64decode(public_key_b64)

public_key = load_der_public_key(der_public_key)

我知道如何将 PEM 转换为 DER https://www.baeldung.com/java-base64-encode-and-decode

使用依赖:

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.10</version>
</dependency>

String decodedString = new String(Base64.decodeBase64(data));

那load_der_public_key呢。 JAVA中有类似的东西吗?

最后是8线。通常 public 密钥是 PEM 编码的字符串,如下所示:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8EmWJUZ/Osz4vXtUU2S
...
QwIDAQAB
-----END PUBLIC KEY-----

对于 RSA public 密钥使用此代码(我使用 Java 内置 Base64 解码器):

public static PublicKey getPublicKeyFromString(String key) throws GeneralSecurityException {
    String publicKeyPEM = key;
    publicKeyPEM = publicKeyPEM.replace("-----BEGIN PUBLIC KEY-----", "");
    publicKeyPEM = publicKeyPEM.replace("-----END PUBLIC KEY-----", "");
    publicKeyPEM = publicKeyPEM.replaceAll("[\r\n]+", "");
    byte[] encoded = Base64.getDecoder().decode(publicKeyPEM);
    KeyFactory kf = KeyFactory.getInstance("RSA");
    PublicKey pubKey = (PublicKey) kf.generatePublic(new X509EncodedKeySpec(encoded));
    return pubKey;
}

如果您“只是”拥有 Base64 编码的数据部分,则可以省略页眉和页脚的“剥离”。