首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  PHP

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

  •  
  •   githere · 2018-10-01 17:38:24 +08:00 via iPad · 1689 次点击
    这是一个创建于 439 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    @imdong #1
    @DavidNineRoc #6

    这样做是错误的。GUID 只是不重复,并不非要安全,不可用于生成密钥。
        9
    yangqi   2018-10-01 22:41:55 +08:00
    你说的是非对称加密,和 hash 没什么关系.php 直接用 openssl.
    http://us3.php.net/manual/en/book.openssl.php
        10
    githere   2018-10-01 22:48:46 +08:00 via iPad
    @Kirscheis 用 python 的话就可以按照你说的方法,请问用 php 如何做呢?
        11
    githere   2018-10-01 23:00:59 +08:00 via iPad
    @yangqi 感谢,查找到好像要用 openssl_pkey_new 这个函数
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1058 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 19:08 · PVG 03:08 · LAX 11:08 · JFK 14:08
    ♥ Do have faith in what you're doing.