gpt4 book ai didi

java - 在 Java SE 1.7 中使用 ECC

转载 作者:行者123 更新时间:2023-11-29 05:21:47 25 4
gpt4 key购买 nike

我正在尝试运行此 pdf 中的代码.例如,对于 ECCKeyGeneration,我得到以下输出而不是 pdf 中的图 1:

sun.security.ec.ECPrivateKeyImpl@58b6
Sun EC public key, 192 bits
public x coord: 4812174841545539052388802454891896756539688756781766645984
public y coord: 1161396487043052042009627836016170768650083444786081272028
parameters: secp192r1 [NIST P-192, X9.62 prime192v1] (1.2.840.10045.3.1.1)

私钥不会打印到控制台/屏幕。相反,它会显示“sun.security.ec.ECPrivateKeyImpl@blabla”,如您在上面所见。造成这种情况的原因可能是什么?

如果你想测试,这里是代码:

import java.security.*;
import java.security.spec.*;

public class ECCKeyGeneration {

public static void main(String[] args) throws Exception {
KeyPairGenerator kpg;
kpg = KeyPairGenerator.getInstance("EC","SunEC");
ECGenParameterSpec ecsp;
ecsp = new ECGenParameterSpec("secp192r1");
kpg.initialize(ecsp);

KeyPair kp = kpg.genKeyPair();
PrivateKey privKey = kp.getPrivate();
PublicKey pubKey = kp.getPublic();

System.out.println(privKey.toString());
System.out.println(pubKey.toString());
}

}

最佳答案

通常私钥值不会打印到屏幕上。因此,为 ECPrivateKey(PrivateKey 的子类)提供 toString() 是没有意义的。打印出私钥值是当然不安全。

当然可以打印出私钥的secret部分;打印出 secp192r1 的其他参数毫无意义。如果需要,您可以从 NIST 或 Certicom 的标准文档中轻松检索它们。

ECPrivateKey ecPrivKey = (ECPrivateKey) eckp.getPrivate();
System.out.println(ecPrivKey.getS().toString(16));

请注意,如果您只需要它来验证是否使用了正确的私钥,则最好打印出私钥值 S 的哈希值。

关于java - 在 Java SE 1.7 中使用 ECC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24383637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com