gpt4 book ai didi

java - 如何从 32 字节原始私钥获取 java.security.PrivateKey ? (Secp256k1算法)

转载 作者:行者123 更新时间:2023-12-01 19:53:47 25 4
gpt4 key购买 nike

我正在尝试从使用 getS() 方法获得的 32 字节原始私钥中获取 PrivateKey 对象。我在 bouncy caSTLe 库中使用了 ECDSA secp256k1 算法来生成 key 对。

下面是我在字节数组中获取 32 字节私钥的方法,我想反转此过程以从 32 字节私钥获取 PrivateKey 对象。

有人可以帮我解决这个问题吗?我真的很感激。

PrivateKey prvKey;

public byte[] getPrivateKey() {
ECPrivateKey ecPrv = (ECPrivateKey) this.prvKey;
byte[] prv = ecPrv.getS().toByteArray();
if (prv[0] == 0) {
byte[] rslt = new byte[prv.length - 1];
System.arraycopy(prv, 1, rslt, 0, prv.length - 1);
return rslt;
} else {
return prv;
}
}

最佳答案

我找到了问题的答案。我使用编码的私钥作为以下方法的参数。以防万一有人仍在寻找答案......

private PrivateKey generatePrivateKey(byte[] encodedPrivateKey)
throws NoSuchAlgorithmException, InvalidKeySpecException {
Security.addProvider(new BouncyCastleProvider());
KeyFactory keyFactory = KeyFactory.getInstance(KEY_FACTORY_ALGORITHM);
return keyFactory.generatePrivate(new PKCS8EncodedKeySpec(encodedPrivateKey));
}

关于java - 如何从 32 字节原始私钥获取 java.security.PrivateKey ? (Secp256k1算法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59061692/

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