PHPでこれを行う方法を知っていて、最近このコードに出くわしました。私はJSが初めてです。誰かがこのコードの機能と実装方法を説明できますか? 本質的に私がしなければならないことは、私が作成しているサイトで公正なゲーム体験を提供することです。
PHP での例 (関連できるすべて): rand() を暗号化し、賭けの前にロールされた # の暗号化されたバージョンを提供し、それを client_seed に追加します。ユーザーは client_seed を変更できます。数字、つまり 59.73 を取得した後、その暗号化されたバージョンを client_seed に追加して、賭けの前に提供されたハッシュが公正であることを証明できることを確認できます。
ただし、JS や PHP ではなく JS ですべてを実装する方がはるかに簡単なので、このコードを実装する方法がわかりません。
ありがとう。
<script type="text/javascript">
function lucky_number(server_seed, client_seed, nonce) {
var hex_chars_to_use = 5;
var hash = crypto.createHmac('sha512', server_seed).update(client_seed + ':' + nonce.toString()).digest('hex');
var len = hash.length;
for (var i = 0; i < len; i += hex_chars_to_use) {
var hex = hash.substring(i, i + hex_chars_to_use);
var lucky = parseInt(hex, 16);
if (lucky < 1000000)
return lucky;
}
// the 26th substring will always be <4096 (3 hex digits), so we won't get here
util.log(0, 'RAN OUT OF HASH! using ' + hash + ' - returning', 0);
return 0;
};
</script>