123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>测试工具demo</title>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js"></script>
- <script src="http://cdn.bootcss.com/blueimp-md5/1.1.0/js/md5.min.js"></script>
- </head>
- <body>
- <input type="button" value="执行" onclick="test()">
- </body>
- <script>
- var open138 = "742076ecd229edf9afbbc7884ab8fb51d8f122979be5430304a4dac0706c959e"
- var open139 = "5271f20f1089ffcf81a91375d0797bf93eadc72bf23f08ebb337fc856d933fa8"
- var clientHash = "931dde3d0d99db6c71a3bfdd6ece7c70cfb6e2a55814282c973c1875adbd807d"
- function test() {
- const hash = sha256.create()
- hash.update(hexToBytes(open139))
-
- var prevHashStr = toHexString(hash.array())
- if(prevHashStr != open138) {
- console.log("失败")
- }else{
- console.log("成功")
- }
- }
- function testCalnum(){
- //获取牌型
- var cardList = getCardNumList(open139, clientHash, 2)
- console.log(cardList)
- //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
- }
- function toHexString(byteArray) {
- return Array.from(byteArray, function (byte) {
- return ('0' + (byte & 0xFF).toString(16)).slice(-2);
- }).join('')
- }
- function hexToBytes(hex) {
- for (var bytes = [], c = 0; c < hex.length; c += 2)
- bytes.push(parseInt(hex.substr(c, 2), 16));
- return bytes;
- }
- function getCardNumList(hashStr, clientHashStr, roomID) {
- var roomHashItem = getRoomHash(hashStr, roomID)
- hashHex = hexToBytes(roomHashItem).concat(hexToBytes(clientHashStr))
- const hash = sha256.create()
- hash.update(hashHex)
- var hashStr = toHexString(hash.array())
- var cardList = calNum(hashStr)
- var card1 = [cardList[0], cardList[5], cardList[10], cardList[15], cardList[20]]
- var card2 = [cardList[1], cardList[6], cardList[11], cardList[16], cardList[21]]
- var card3 = [cardList[2], cardList[7], cardList[12], cardList[17], cardList[22]]
- var card4 = [cardList[3], cardList[8], cardList[13], cardList[18], cardList[23]]
- var card5 = [cardList[4], cardList[9], cardList[14], cardList[19], cardList[24]]
- return [card1, card2, card3, card4, card5]
- }
- function getRoomHash(hashStr, roomID) {
- var roomHash = md5("room_hash_"+roomID)
- var newHashSignHex = hexToBytes(hashStr).concat(hexToBytes(roomHash))
- const hash = sha256.create()
- hash.update(newHashSignHex)
- return toHexString(hash.array())
- }
- function calNum(hashStr) {
- var hashByte = hexToBytes(hashStr)
- var resultList = []
- var filterMap = {}
- var offset = 0
- for(let i=0; i<25; i++) {
- var item = (hashByte[i] + offset)%52
- if(filterMap[item]) {
- offset++
- i--
- continue
- }
- resultList.push(item)
- filterMap[item] = true
- offset = 0
- }
- return resultList
- }
- </script>
- </html>
|