请教:如何用 PHP 产生一个类似 bitcoin 那样的公钥和私钥地址对?并且还要保证跟别人的不重合。

2018-10-01 17:38:24 +08:00
 githere

查到 php 文挡里面有 hash 的方法,但是如何产生一个独一无二的公钥和私钥地址对?

2738 次点击
所在节点    PHP
11 条回复
imdong
2018-10-01 18:56:53 +08:00
使用 GUID 之类的生成。
理论上是不会重复的,是默认可信的。
然鹅,理论和实际是有区别的😏
annoy1309
2018-10-01 18:59:10 +08:00
找一个靠谱的随机数生成器,随机数种子最好是用用户的行为生成的
生成公钥和私钥对,都用不上 php。纯前端都能完成。
leoleoasd
2018-10-01 19:35:08 +08:00
100%不重合 只能用某自增变量生成
Kirscheis
2018-10-01 19:39:43 +08:00
调用标准密码学库,记得用真随机数。

不用考虑重合问题,对于标准长度的密钥,只要随机源靠谱,重合概率无限接近 0
PureWhiteWu
2018-10-01 19:48:11 +08:00
让一个新手退出 vim 即可
DavidNineRoc
2018-10-01 20:22:03 +08:00
uuid 生成一个可用的字符串,自己再写一个异或对调的函数
githere
2018-10-01 22:33:10 +08:00
@DavidNineRoc 能否列举一个代码案例?
geelaw
2018-10-01 22:41:16 +08:00
生成密钥的算法不能保证生成的密钥是惟一的。然而使用者无需考虑这个问题,只需要按照算法生成和使用密钥即可获得对应算法的安全性保障。

GUID 的生成算法可以保证正确使用的情况下若干年内惟一。

@imdong #1
@DavidNineRoc #6

这样做是错误的。GUID 只是不重复,并不非要安全,不可用于生成密钥。
yangqi
2018-10-01 22:41:55 +08:00
你说的是非对称加密,和 hash 没什么关系.php 直接用 openssl.
http://us3.php.net/manual/en/book.openssl.php
githere
2018-10-01 22:48:46 +08:00
@Kirscheis 用 python 的话就可以按照你说的方法,请问用 php 如何做呢?
githere
2018-10-01 23:00:59 +08:00
@yangqi 感谢,查找到好像要用 openssl_pkey_new 这个函数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/494435

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX