为了确定地从现有密钥中生成新的secp256k1密钥,仅从旧密钥中获取sha256结果并将其用作熵以生成新的secp256k1密钥是否安全?使用此方法,只要具有oldPrivKeyHex,就可以获取派生密钥。
const ec = new EC('secp256k1');
const keyHash = shajs('sha256')
.update(oldPrivKeyHex)
.digest();
var newKey = ec.genKeyPair({ entropy: keyHash });
lib src: https://github.com/indutny/elliptic
答案 0 :(得分:0)
有可能,但我会做不同的事情。我会在其他键(甚至更好的是键派生函数或KDF的结果)上使用哈希,然后将其直接用于fromPrivate
方法或将KeyPair
构造函数与私钥作为参数。
原因是尚未精确指定随机数生成器。如果处理随机数生成时发生任何事情,那么您可能会突然得到一个不同的密钥。
KDF或哈希方法将已经确保熵被压缩,因此不再需要随机数生成器。我当然宁愿使用SHA-512或SHA-256(按此顺序),而不是使用提供少于256位的哈希算法。