如何从不带私钥的PEM格式的ECC公钥中获取X和Y分量?

问题描述 投票:0回答:1

我知道我们可以使用openssl来做到这一点。但是,这需要私钥。就我而言,我没有私钥,只有公钥。我使用Google Cloud HSM,并且不能直接访问私钥。我只能下载公钥。那我该怎么办?

我的公钥,它使用secp256r1

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhspCFgsa/oSDJajb8DvaLhLURUbD
C2UXU1E/a//ht4NMLTadhSMc195SL8YD55tPXR6bvERBrZfYEmpBlkr8BQ==
-----END PUBLIC KEY-----
encryption openssl public-key
1个回答
1
投票

是否需要openssl作为解决方案?我看不到一种获取您要求的信息的方法。

我通过一个简单的Java程序获得了此信息:

EC public key, 256 bits
  public x coord: 60967280926790184513158415212015267447322831299023265344568139622352475502467
  public y coord: 34455661551278605550386928620071510096611427884751984970963480406192147856389
  parameters: secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)

Java代码:

    String keyAsTxt = "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhspCFgsa/oSDJajb8DvaLhLURUbDC2UXU1E/a//ht4NMLTadhSMc195SL8YD55tPXR6bvERBrZfYEmpBlkr8BQ==";
    byte[] keyAsBytes = Base64.getDecoder().decode(keyAsTxt);
    X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyAsBytes);
    KeyFactory keyFactory = KeyFactory.getInstance("EC");
    PublicKey publicKey = keyFactory.generatePublic(keySpec);
    System.out.println(publicKey);
© www.soinside.com 2019 - 2024. All rights reserved.