【问题标题】:Convert hex encoded ESCDA private key to Java PrivateKey interface将十六进制编码的 ESCDA 私钥转换为 Java PrivateKey 接口
【发布时间】:2018-02-14 11:07:02
【问题描述】:

我正在尝试实现我自己的 HyperLedger-Fabric SDK 的 Java 用户界面。如果您不熟悉 HyperLedger-Fabric,请忽略这行,没有必要。

为此,我正在尝试将此 json(从结构)转换为私钥:

"enrollment":
{
    "signingIdentity":"e90c96e1919de2971913c5a7a3e09ccc13f1a765f64c7949e9ee50a26721ed9b",
    "identity":
    {
        "certificate":
            "-----BEGIN CERTIFICATE-----\nMIIB8TCCAZegAwIBAgIUbIsZfWI2ETkBp745jW87ATqS0zAwCgYIKoZIzj0EAwIw\nczELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh\nbiBGcmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMT\nE2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMjEzMTU1MzAwWhcNMTgxMjEzMTU1\nMzAwWjAQMQ4wDAYDVQQDEwV1c2VyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBJyAKHhZR82HgkdjXJqYUogNSAn4MtrZq62534/9bOQLBBoe3ySFXvecE5/jBKwV\nQwLpsfpow9YbHxrA4WkkJ9CjbDBqMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8E\nAjAAMB0GA1UdDgQWBBT6IGsIp5IEYqYxntl3N8SyOfYYoDArBgNVHSMEJDAigCBC\nOaoNzXba7ri6DNpwGFHRRQTTGq0bLd3brGpXNl5JfDAKBggqhkjOPQQDAgNIADBF\nAiEAh9yjeFMFDbw9Uijz3nJrC2sXc1mpISxalgK6UmkadoACIEXKlU+XqHj9bV/Y\nQpA7aDaWLsOFYCgTSrHNNFsFWBbQ\n-----END CERTIFICATE-----\n"
    }
}

私钥在“signingIdentity”字段中(它只是测试私钥,随意使用它:-))。

据我所知,hyperledger-fabric 使用 ESCDA,所以应该是椭圆曲线。

但我不知道如何从这些数据中生成正确的 Java PrivateKey 实例...

【问题讨论】:

    标签: java cryptography hyperledger-fabric private-key ecdsa


    【解决方案1】:

    以下应该为您完成工作:

    try (PEMParser parser = new PEMParser(new StringReader(/*PUT signingIdentity here*/)) {
        pemPair = (PrivateKeyInfo) parser.readObject();
        JcaPEMKeyConverter pemConverter = new JcaPEMKeyConverter();
        return pemConverter
                          .setProvider(BouncyCastleProvider.PROVIDER_NAME)
                          .getPrivateKey(pemPair);
     }
    

    当然你需要 BouncyCastle 库的依赖:

    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpkix-jdk15on</artifactId>
      <version>1.55</version>
    </dependency>
    

    【讨论】:

    • 我看不出它是如何工作的,signingIdentity 只是一个 256 位十六进制编码的整数,没有其他元数据。特别是,它不是 PEM 任何东西。
    • 是的,你说得对,我很着急,对密钥感到困惑。明天将发布更新。
    猜你喜欢
    • 1970-01-01
    • 2014-03-10
    • 2017-10-06
    • 2019-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多