rollin.io verifier
HTML
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha512.js"></script>
<script src="https://cdn.rawgit.com/banksean/300494/raw/f003af3e59a164330da573202f2372b94eb8ae47/mersenne-twister.js"></script>
<table>
<tr>
<td class="title">Random Seed</td>
<td>
<input id="random" value="" />
</td>
</tr>
<tr>
<td>Server Seed</td>
<td>
<input id="server" value="" />
</td>
</tr>
<tr>
<td>Client Seed</td>
<td>
<input id="client" value="" />
</td>
</tr>
<tr>
<td> </td>
<td>
<button id="calc">Calculate!</button>
</td>
</tr>
</table>
<h2>Verify That:</h2>
<div>
<table class="bordered">
<tr>
<td class="title">Informed Server Hash</td>
<td id="server-hash"></td>
</tr>
<tr>
<td>Roll Result</td>
<td id="result"></td>
</tr>
</table>
</div>
CSS
body {
font-family: arial;
font-size: 13px;
}
table {
width: 100%;
border-collapse: collapse;
}
input {
width: 100%;
}
tr {
vertical-align: top;
}
td {
padding: 4px;
}
table.bordered td {
border: 1px solid gray;
}
td.title {
width: 120px;
}
JavaScript
jQuery(function ($) {
function rcalc() {
var randomSeed = $('#random').val();
var serverSeed = $('#server').val();
var clientSeed = $('#client').val();
//verify server hash:
$('#server-hash').text(CryptoJS.SHA256(serverSeed + randomSeed));
var seed = CryptoJS.HmacSHA512(serverSeed, clientSeed).toString();
var start = (seed.length / 2) - 4;
seed = seed.substr(start, 8);
seed = parseInt(seed, 16);
var m = new MersenneTwister(seed);
var n = parseInt(m.random() * 100);
$('#result').text(n);
}
$('#calc').click(function () {
rcalc();
});
$('#server, #client').change(function () {
rcalc();
});
});