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

好奇一个事,博彩网站上的那些随机数生成机制是什么

  •  
  •   guhuaiyu · 2018-11-29 11:13:15 +08:00 · 5591 次点击
    这是一个创建于 2189 天前的主题,其中的信息可能已经有所发展或是发生改变。
    20 条回复    2018-11-29 20:17:04 +08:00
    F1024
        1
    F1024  
       2018-11-29 11:19:31 +08:00
    菠菜网有随机数?活久见
    SeaRecluse
        2
    SeaRecluse  
       2018-11-29 11:19:35 +08:00
    张口就来,正则枚举
    php01
        3
    php01  
       2018-11-29 11:19:57 +08:00
    1.大家都是人,有趋利避害的天性,所以追求公平与安全,可以推导出没人愿意相信一个没有公信力的开奖结果
    2.事实上也是如此,大多数的菠菜项目的开奖结果,都是以一个公众能方便查询到的,且有公信力的,且与本菠菜平台没有利益相关的事物。例如私菜大多数是以福菜的开奖结果为结果,还有一些是以 QQ 的在线人数统计为开奖结果。
    3.最重要的一点是共识,大家相信的且无异议的开奖,才是正常的,不然没人敢去玩。比如线下,那叫眼见为实,亲眼所见就在面前,线上,全世界人民都能查到某一期的某一次开奖,都没有差别。
    ipoh
        4
    ipoh  
       2018-11-29 11:23:05 +08:00
    比特币的最新区块 hash
    zpxshl
        5
    zpxshl  
       2018-11-29 12:42:08 +08:00 via Android
    @php01 但是那些在线纸牌游戏呢。。。
    Cbdy
        6
    Cbdy  
       2018-11-29 12:49:14 +08:00   ❤️ 1
    可以考虑用当前的上证指数、纳斯达克指数
    yang3121099
        7
    yang3121099  
       2018-11-29 12:54:33 +08:00
    @Cbdy 还有一些网站参考美元汇率,比特币汇率什么的
    imn1
        8
    imn1  
       2018-11-29 13:05:23 +08:00
    性感荷官在后面掷色子决定的
    slimhigh
        9
    slimhigh  
       2018-11-29 13:28:46 +08:00   ❤️ 6
    生成*真*随机数是很困难的一件事情。一般各种语言里面提供的 `random()` 函数都是生成的伪随机数。`random()`的底层实现实际上是一个数学公式,例如,这个公式接收一系列初始值,然后根据这个初始值就可以生成一个数列,每次`random()`函数获取的随机数,不过是取这个数列中的一项。伪随机数的安全关键点在于,初始值的选择,一旦别人猜出你的初始值,就可以知道你后面要生成的所有伪随机数。
    有很多人初始化随机数种子喜欢使用当前时间戳,但是要注意使用这种方式生成的随机数不能用于安全相关的场景,例如用它来生成每期的中奖号码。黑客可以根据的使用的编程语言,知晓伪随机数的公式,然后根据你大概的执行时间,来尝试初始化这个公式,根据历史号码对比,得出你使用的初始化时间戳,从而获得以后的中奖号码。
    为了使伪随机数不可预测,选择合适的初始化参数至关重要,初始化参数要不可预测,也就是说要*真*随机。一般来说安全的方式是使用`/dev/random`( Linux 系统)设备产生的随机字节数据。`/dev/random`中的数据来源于计算机硬件设备的环境噪声,例如放大电路的热噪声,因此`/dev/random`中的数据非常非常难以预测,接近于*真*随机数,各种编程语言中大部分涉及加密的函数库,初始化参数都会用到`/dev/random`的数据。
    不过`/dev/random`在虚拟机环境下可能不是十分安全,例如在 AWS、阿里云这种云平台场景下,所有的虚拟机设备都是虚拟化出来的,导致`/dev/random`的数据可能会被猜测出来。这中情况下需要考虑别的*真*随机数生成方式,例如专门的随机数生成硬件设备,或者使用像 random.org 这样的服务,random.org 的随机数据来自于地球的大气噪声。
    widdy
        10
    widdy  
       2018-11-29 13:40:45 +08:00
    不都是用户和平台各自生成一个种子,然后将种子 hash 发送给对方,最后双方拿种子开奖的么。
    lsido
        11
    lsido  
       2018-11-29 13:41:37 +08:00 via Android
    所以你是说系统彩随机开号吗?
    还能什么机制,就是你想的那种最简单的
    php01
        12
    php01  
       2018-11-29 15:19:30 +08:00
    @zpxshl 目前的在线棋牌类游戏,也都是房卡游戏了,也就是说,是自己几个熟人之间去玩,相当于约好一起去麻将馆打牌,只是这个麻将馆是在线上。
    jasonyang9
        13
    jasonyang9  
       2018-11-29 15:29:04 +08:00
    @slimhigh #9 rndg 服务就是做这个事情的,Hardware RNG Entropy Gatherer Daemon
    guhuaiyu
        14
    guhuaiyu  
    OP
       2018-11-29 15:33:33 +08:00
    guhuaiyu
        15
    guhuaiyu  
    OP
       2018-11-29 15:34:43 +08:00
    @F1024 我是说类似那种分分彩,一分钟开一期,五个数字,好奇这组数据是怎么来的
    guhuaiyu
        16
    guhuaiyu  
    OP
       2018-11-29 15:36:02 +08:00
    @imn1 有种分分彩,一分钟开一期,性感荷官摇得过来吗
    F1024
        17
    F1024  
       2018-11-29 15:53:21 +08:00
    @guhuaiyu
    这个一般是用的地方彩的数据
    不是网站自己发明的彩票 这样的话别人不会去玩的
    petelin
        18
    petelin  
       2018-11-29 17:22:01 +08:00
    可以这么解决, 用户上传一个种子, 然后菠菜拿一个私钥和一个数据(比如时间戳)对着个种子加密之后用一定的算法的出来一个数. 用户可以用公钥去验证这个数是不是这么开出来的.
    区块链还是有价值的
    phpcxy
        19
    phpcxy  
       2018-11-29 17:39:55 +08:00
    在线纸牌发牌的随机算法呢?
    ranleng
        20
    ranleng  
       2018-11-29 20:17:04 +08:00
    我记得原来有个菠菜网是给出算法,
    每天给出两个种子, 第二天给出前一天的第三个种子,
    然后用户可以按照算法+三个种子 推算所有游戏的结果,

    感觉没什么漏洞,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2571 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 15:50 · PVG 23:50 · LAX 07:50 · JFK 10:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.