java - 如何从 32 字节原始私钥中获取 java.security.PrivateKey ?(Secp256k1 算法)
问题描述
我正在尝试从使用 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));
}
推荐阅读
- c# - 如何调整 datagridview 的大小以适应内容?
- swift - SwiftUI 将 ViewModifier 作为参数传递
- telegram - 在电报上发送消息:“禁止:bot 不是超级群聊的成员”或“禁止:bot 不是频道聊天的成员”
- python - Keras LSTM 用序列预测
- javascript - 返回结果Nodejs时结果总是未定义
- javascript - 在 javascript 中将训练数据保存在 json 文件中
- fortran - 如何使用 gfortran-10 构建 MPICH?
- python - 是否可以在字典中使用两个(非嵌套)for 循环?
- python - 将烧瓶表单字段与 html 输入相结合
- python - 有什么方法可以加快 SQLite Update 命令的速度吗?