我想在c#中签署一个比特币交易 . 我有2位代码我想完成 . 我可以使用Bouncy城堡创建一组私钥和公钥 . 我可以将此转换为钱包导入格式确定 .
我还可以从ECDSA公钥生成比特币地址 .
但是,我想签署一个交易,我拥有的只是我的私钥 . 我不想导入钱包和签名 . 那么只有私钥才能生成公钥?
我找到了一个执行此操作的javascript方法:
ecparams.getG().multiply(this.priv).getEncoded();
我在Bouncy Castle看到的唯一方法是生成一个随机对 .
private static AsymmetricCipherKeyPair GenerateKeys(int keySize)
{
ECKeyPairGenerator gen = new ECKeyPairGenerator();
SecureRandom secureRandom = new SecureRandom();
KeyGenerationParameters keyGenParam = new KeyGenerationParameters(secureRandom, keySize);
gen.Init(keyGenParam);
return gen.GenerateKeyPair();
}
4 回答
从steininger的回答中,我得到以下内容来处理我的样本密钥 .
看看下面的代码 . 在此示例中,私钥由base64编码的字符串给出,并且还返回base64编码的字符串 . 注释的keyParameters正在工作,所以如果你想拥有键和曲线,请使用这个 .
如果你正在处理DER编码键,它甚至更简单:
我不是C#程序员,但你可以在pybitcoin工具中遵循privkey原语到公钥 .
https://github.com/vbuterin/pybitcointools/blob/master/bitcoin/main.py#L344