用PHP实现secp256k1(ECDSA)(用于比特币)

 小伟 发布于 2023-02-12 19:10

热衷于downvoters和/或关闭者:如果你认为这是SO的offtopic,请指出我的其他StackExchange站点,这个问题更合适.


如何在PHP中实现ECDSA曲线secp256k1

或者说:是否有任何解决方案 - 即.包括专业课程 - 已经完成了吗?

我可以看到有很多开源库,类和其他语言可用的东西(JavaScript,Python,...)但我整个下午都在谷歌上搜索一些/任何PHP解决方案而且...... 没有!.

这是的比特币项目,我需要一种如何从私钥生成公钥的方法 ...... 然后我想生成最终的比特币地址.

我知道如何生成私钥(不要担心它是随机的或不是 - 这里不是问题)我有256位十六进制和WIF符号.但下一步:提出一个公钥,然后是最终的比特币地址,对我来说是一个问题,因为我确实没有加密的背景,我知道解决方案是以某种方式利用secp256k1.

这是我到目前为止:

// Random bytes
// $private_key = bin2hex(openssl_random_pseudo_bytes(32));
// But using brainwallet.org style to have easy comparison
$passphrase = "correct horse battery staple";
$private_key = hash('sha256', $passphrase);
var_dump ("PrivKey: $private_key");
// Bitcoin::privKeyToWIF from github.com/mikegogulski/bitcoin-php
$wif = Bitcoin::privKeyToWIF($private_key); 
var_dump ("WIF PrivKey: $wif");
// And now I don't know where to even start ...

tl; dr如何在PHP中实现这一点?(..和privKey->之前的pubKey转换)

http://i.stack.imgur.com/U2neg.png

我知道......

http://github.com/mikegogulski/bitcoin-php ..这是非常整洁,有很多有用的方法和方法如何通过RPC 控制bitcoind,但不幸的是,缺少可以处理privKey-> pubKey机制的纯PHP方法.

http://bitcoinphp.com/ ..我在那里找不到它.

PHP中的openssl扩展,但不幸的是OPENSSL-PHP文档提到的唯一摘要方法是'ecdsa-with-SHA1',如果我错了,请纠正我,但我需要'ecdsa-with-SHA256',或者其他什么东西像那样 (?)

我甚至试图从bitcoinjs.js转换算法,但凭借我的加密知识,我无法提取任何东西的要点.我根本不理解那些曲线及其位操作和其他怪异的东西.

我正在寻找PURE PHP解决方案.我不是在寻找使用shell运行bitcoind然后解析密钥对的JSON然后...

为什么没有一段代码可以在PHP中完全处理这个问题?还是在那里?!:)

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有