checktool.html 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>测试工具demo</title>
  6. <script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js"></script>
  7. <script src="http://cdn.bootcss.com/blueimp-md5/1.1.0/js/md5.min.js"></script>
  8. </head>
  9. <body>
  10. <input type="button" value="执行" onclick="test()">
  11. </body>
  12. <script>
  13. var open138 = "742076ecd229edf9afbbc7884ab8fb51d8f122979be5430304a4dac0706c959e"
  14. var open139 = "5271f20f1089ffcf81a91375d0797bf93eadc72bf23f08ebb337fc856d933fa8"
  15. var clientHash = "931dde3d0d99db6c71a3bfdd6ece7c70cfb6e2a55814282c973c1875adbd807d"
  16. function test() {
  17. const hash = sha256.create()
  18. hash.update(hexToBytes(open139))
  19. var prevHashStr = toHexString(hash.array())
  20. if(prevHashStr != open138) {
  21. console.log("失败")
  22. }else{
  23. console.log("成功")
  24. }
  25. }
  26. function testCalnum(){
  27. //获取牌型
  28. var cardList = getCardNumList(open139, clientHash, 2)
  29. console.log(cardList)
  30. //10,48,28,27,12 5,34,32,25,36 35,31,17,49,18 15,11,33,42,37 16,30,29,2,38
  31. }
  32. function toHexString(byteArray) {
  33. return Array.from(byteArray, function (byte) {
  34. return ('0' + (byte & 0xFF).toString(16)).slice(-2);
  35. }).join('')
  36. }
  37. function hexToBytes(hex) {
  38. for (var bytes = [], c = 0; c < hex.length; c += 2)
  39. bytes.push(parseInt(hex.substr(c, 2), 16));
  40. return bytes;
  41. }
  42. function getCardNumList(hashStr, clientHashStr, roomID) {
  43. var roomHashItem = getRoomHash(hashStr, roomID)
  44. hashHex = hexToBytes(roomHashItem).concat(hexToBytes(clientHashStr))
  45. const hash = sha256.create()
  46. hash.update(hashHex)
  47. var hashStr = toHexString(hash.array())
  48. var cardList = calNum(hashStr)
  49. var card1 = [cardList[0], cardList[5], cardList[10], cardList[15], cardList[20]]
  50. var card2 = [cardList[1], cardList[6], cardList[11], cardList[16], cardList[21]]
  51. var card3 = [cardList[2], cardList[7], cardList[12], cardList[17], cardList[22]]
  52. var card4 = [cardList[3], cardList[8], cardList[13], cardList[18], cardList[23]]
  53. var card5 = [cardList[4], cardList[9], cardList[14], cardList[19], cardList[24]]
  54. return [card1, card2, card3, card4, card5]
  55. }
  56. function getRoomHash(hashStr, roomID) {
  57. var roomHash = md5("room_hash_"+roomID)
  58. var newHashSignHex = hexToBytes(hashStr).concat(hexToBytes(roomHash))
  59. const hash = sha256.create()
  60. hash.update(newHashSignHex)
  61. return toHexString(hash.array())
  62. }
  63. function calNum(hashStr) {
  64. var hashByte = hexToBytes(hashStr)
  65. var resultList = []
  66. var filterMap = {}
  67. var offset = 0
  68. for(let i=0; i<25; i++) {
  69. var item = (hashByte[i] + offset)%52
  70. if(filterMap[item]) {
  71. offset++
  72. i--
  73. continue
  74. }
  75. resultList.push(item)
  76. filterMap[item] = true
  77. offset = 0
  78. }
  79. return resultList
  80. }
  81. </script>
  82. </html>