Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中实现secp256k1(ECDSA)(用于比特币)_Php_Bitcoin_Ecdsa_Php Openssl - Fatal编程技术网

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

在PHP中实现secp256k1(ECDSA)(用于比特币),php,bitcoin,ecdsa,php-openssl,Php,Bitcoin,Ecdsa,Php Openssl,对于那些热衷于反对的选民和/或密友:如果你认为这是一个离题的话题,请告诉我这个问题更合适的其他StackExchange网站。 如何在PHP中实现ECDSA曲线secp256k1 或者更确切地说:是否有任何解决方案(即可包含的专门类)已经完成 我可以看到有很多其他语言(JavaScript、Python等)的开源库、类和东西可用,但我刚刚花了整个下午在谷歌上搜索了一些/任何PHP解决方案和

对于那些热衷于反对的选民和/或密友:如果你认为这是一个离题的话题,请告诉我这个问题更合适的其他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转换之前)

我知道

  • 。。它非常简洁,有很多有用的方法和方法可以通过RPC控制比特币,但不幸的是,缺少了能够处理privKey->pubKey机制的纯PHP方法
  • 。。我在里面找不到它
  • PHP中的openssl扩展,但不幸的是openssl-PHP文档中提到的唯一摘要方法是“ecdsa-with-SHA1”,如果我错了,请纠正我,但我需要“ecdsa-with-SHA256”或类似的东西(?)
  • 我甚至尝试从bitcoinjs.js转换算法,但以我的加密知识,我无法提取任何要点。我只是不明白那些曲线,它们的位运算和其他可怕的东西
我正在寻找纯PHP解决方案。我不希望使用运行比特币的shell,然后解析JSON的密钥对,然后


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

如果这值得投反对票,你可以和其他人分享确切的原因。我没有投反对票,但你要求用PHP解决问题,却没有表明你确实尝试创建了自己的解决方案,这有时会让人不快……也就是说,我认为这是一个有趣的问题(我不介意自己知道答案)。不幸的是,我没有票数了,所以我不能为你
+1
这个。哦,说得好。但话说回来,我甚至不知道从哪里开始实现这个魔术。:)我开始开发一个PHP库,正好可以实现这一点。它需要安装php>=5.4和php5 gmp扩展。您可以在这里查看代码,您已经可以提供私钥(256个十六进制字符串),它将为您生成WIF、公钥和相应的未压缩比特币地址。但请不要在生产中使用它,因为它仍然缺少很多东西。