我知道如何在 PHP 中做到这一点,最近遇到了这段代码。我对 JS 很陌生。有人可以解释这段代码的作用以及如何实现它吗?本质上,我需要做的是为我正在创建的网站提供可证明公平的游戏体验。
PHP 中的示例(我能想到的所有内容):我加密 rand() 并提供在投注前滚动的 # 的加密版本,并将其添加到 client_seed。用户可以更改client_seed。在他们获得数字即 59.73 后,他们可以使用 client_seed 添加该数字的加密版本,以查看这是在提供可证明公平的赌注之前提供的散列。
除了我不明白如何实现这段代码,因为在 JS 中而不是在 JS 和 PHP 中拥有一切会容易得多。
谢谢。
<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>