不是很懂雀魂公开牌山是怎么加密的
雀魂吧
全部回复
仅看楼主
level 8
如果可以实时查牌山,那岂不是把把可以作弊?如果要打完才能查,那那个代码不还是可以根据结果来生成牌山?
2024年09月19日 10点09分 1
level 12
牌山代码需要破译,出结果了,这局都结束了
2024年09月19日 10点09分 2
level 12
之前吧里有大佬说了,这种代码用牌山推代码简单,但代码推牌山就很复杂
2024年09月19日 10点09分 3
既然我们都推不出来,那不是网页说啥就是啥?牌山里加入一个可定义变量,最后输出啥可以随时确定。他先生成一个1+1的代码,最后牌山翻出来是2他就输出2,是3他就输出3。
2024年09月19日 10点09分
@朝武芳乃永远的神 可以推出,但用时大于对局所用时间,所以推出牌山,这局已经结束了
2024年09月19日 10点09分
@朝武芳乃永远的神 建议先了解密码学相关知识再发帖,或者你只需要知道牌山固定完全没问题就行了
2024年09月19日 10点09分
@朝武芳乃永远的神 说点基础的吧,一切信息都可以加密,就比如我这句话。你可以拿我这句话加密出一个sha256码,并且有很多工具或者方法可以验证这个信息对应的究竟是不是这个码,但用这个码你没办法还原信息
2024年09月19日 10点09分
吧务
level 13
2024年09月19日 10点09分 5
level 7
哈希函数了解一下
2024年09月19日 10点09分 6
level 13
简单来说,加密是使用固定的算法对牌山计算,算出一个码,但用这个码没法反向算出牌山。
对局时显示的是这个码,你算不出牌山,但这个码能证明牌山是早就固定好的,方法就是你对局完之后对牌山也用这个算法算一遍,会得到同样的码,不同的牌山是对应不同的码的
2024年09月19日 10点09分 7
level 1
你在打的時候點一下左上角寶牌指示那個框就會發現這一局的牌山代碼
這個代碼是由原始牌山加密生成而來
從原始牌山加密變成牌山代碼這個過程是單向且幾乎唯一的
也就是說只要原始牌山不同,經過加密所對應到的牌山代碼就會大相逕庭
而這個代碼是單向也就是以目前的技術來說
無法在對局的時間內從加密過後的代碼反推回原本的牌山
而要是對局中有竄改過原本的牌山則你在一開始跟結束後查看的牌山代碼(加密後)會不相同
不過這只能保證牌山的公平性,而不能保證起手配牌的公平性
也就是說我可以透過設計原始牌山牌型使得坐東家的玩家的起手配牌特別好
進而導致和率在這局會大幅提高
也可以設計這局坐南家的玩家起手配牌特別差
這樣就可以降低他的和率
這也是比較有爭議的點
之前才有人提出在每局牌山確定好後讓每局玩家都選一個0~3的數然後相加起來除以4的餘數來決定起手牌摸牌順序
這樣也保證了起手牌的公平性
至於牌山摸牌順序會因為人的鳴牌發生改變這部分設計者要作弊是很困難的所以也可以視為公平
2024年09月19日 11点09分 8
更多討論也可以看看這篇:https://blog.junyu33.me/2024/08/25/majsoul.html
2024年09月19日 11点09分
吧务
level 14
这个加密方法本质上是一种散列函数。散列函数有以下三个特点:
①输出的长度永远相同;
②相同的输入只会得到相同的输出;
③无法从输出反推输入。
2024年09月19日 11点09分 9
吧务
level 14
取余就可以看作一种简单的散列函数。举个例子:
假设牌山是1~9这九张数字牌构成的。开局时可以告诉所有玩家:牌山顺序构成的九位数,除以997的余数是914。
这个信息对于游戏中的玩家是无意义的,因为单凭这个余数没有办法计算出原本的牌山数字,而且仅凭游戏过程中可见的牌难以在游戏结束前暴力算出牌山。
在游戏结束后,牌山可供所有玩家查看:953146872。每个玩家都可以用“除以997取余数”的方式验证这个余数是不是之前公布的914。
2024年09月19日 11点09分 10
以此便可以证明牌山在游戏过程中没有被篡改:因为一旦篡改,函数的输出就会发生变化,验证时就会被发现。
2024年09月19日 11点09分
吧务
level 14
在实际的麻将游戏中牌山排列的复杂度要多得多,以目前计算机的算力,即使花上几亿年也不可能暴力算出牌山,更何况一小局麻将只有5分钟。
2024年09月19日 11点09分 11
1