Provéquemment juste en utilisant Hash's

En parcourant Internet, je me suis retrouvé sur ce fil.

J'essaie maintenant de répliquer ce code exactement, de le faire fonctionner sur un serveur privé. J'ai copié le code et l'ai mis sur un serveur, puis j'ai essayé de vérifier le rôle dans ce violon.

Code exact que j'utilise

function crashPointFromHash(serverSeed, clientSeed) { function divisible(hash, mod) { // We will read in 4 hex at a time, but the first chunk might be a bit smaller // So ABCDEFGHIJ should be chunked like AB CDEF GHIJ var val = 0; var o = hash.length % 4; for (var i = o > 0 ? o - 4 : 0; i < hash.length; i += 4) { val = ((val << 16) + parseInt(hash.substring(i, i+4), 16)) % mod; } return val === 0; } var hash = crypto.createHmac('sha256', serverSeed).update(clientSeed).digest('hex'); /* In 1 of 101 games the game crashes instantly. */ if (divisible(hash, 101)) return 0; /* Use the most significant 52-bit from the hash to calculate the crash point */ var h = parseInt(hash.slice(0,52/4),16); var e = Math.pow(2,52); return Math.floor((100 * e - h) / (e - h)); } var serverSecret = 'If you knew this, you could steal all my money'; var clientSeed = '0000examplehash'; var gamesToGenerate = 100; var serverSeed = serverSecret; for (var game = gamesToGenerate; game > 0; --game) { serverSeed = genGameHash(serverSeed); console.log('Game ' + game + ' has a crash point of ' + (crashPointFromHash(serverSeed, clientSeed) / 100).toFixed(2) +'x', '\t\tHash: ' + serverSeed); } var terminatingHash = genGameHash(serverSeed); console.log('The terminating hash is: ', terminatingHash); 

Problème Chaque fois que je génère une sortie de la fonction crashPointFromHash, j'obtiens une sortie comme suit:

 Game 2 has a crash point of 3.61x Hash: 60729d9c66984af57084ece549c02855e6ac7ae221d4ee0a6b12de437b577f4f Game 1 has a crash point of 1.34x Hash: 0d248a46e6ed5411d98dcec2e59bf3ef9bf55afbeb4aea2bec4a55409a4fedb6 

Ensuite, chaque fois que j'essaie de le vérifier dans le violon mentionné ci-dessus, les points de collision ne correspondent pas.

Est-ce que je manque quelque chose ici, qu'est-ce que je fais mal? Je sais … Je suis un noob total. J'aimerais simplement fonctionner.