我知道如何在PHP中執行此操作,並且最近遇到此代碼。我對JS很陌生。有人可以解釋這段代碼的作用和如何實現它嗎?基本上我需要做的是爲我創建的網站提供可觀的公平遊戲體驗。Javascript加密功能 - 它是如何工作的?
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>
那麼你會建議我採取什麼課程?我有我寫的PHP代碼,它工作正常,但我的問題是,當他們點擊滾動,它刷新頁面。我希望它給滾動的無刷新刷新,然後更新餘額(例如,他們有.001和0.0001我想讓它自動更新爲.0009,如果它是一個損失或0.0011,如果它是一個勝利)。我會用什麼JS來做到這一點? – user2534566
一個不太有用的答案是在繼續之前創建一個安全協議。代碼不是你最初的問題,你的問題是不瞭解問題空間,並理解可以使其安全的解決方案。您必須首先開發和驗證協議(從您的用例開始,然後是設計,圍繞設計的線程模型等)。正如你可能理解的,這超越了Stackoverflow,並且有許多陷阱。 –
然後,如果您只想創建一個版本,客戶端只需在本地生成足夠隨機的隨機數,那麼您應該簡單地在請求之間保存PRNG的狀態。這並不是一個安全的協議,但它可能足以滿足您的情況。 –