8

对于热衷于投票的人和/或更接近的人:如果您认为这与 SO 无关,请指出其他 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;博士如何在 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转换算法,但是凭借我的加密知识,我无法提取任何内容的要点。我根本不理解那些曲线和它们的位操作以及其他令人毛骨悚然的东西。

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

为什么没有一段代码可以完全在 PHP 中处理?或者在那里?!:)

4

0 回答 0