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

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

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

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

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

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

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

    @imdong #1
    @DavidNineRoc #6

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