我正在尝试使用getS()方法从32字节的原始私钥中获取PrivateKey对象。我在弹性城堡库中使用了ECDSA secp256k1算法来生成密钥对。
下面是在字节数组中获取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/