Skip to content

Instantly share code, notes, and snippets.

@Rcomian
Created December 9, 2012 12:26
Show Gist options
  • Save Rcomian/4244653 to your computer and use it in GitHub Desktop.
Save Rcomian/4244653 to your computer and use it in GitHub Desktop.
Randomize an Array
var crypto = require('crypto');
var hash = 'SHA512';
function getStirHash(key, blocknum, length) {
var stirhasher = crypto.createHash(hash);
stirhasher.update(key);
stirhasher.update(blocknum.toString().toString('binary'));
stirhasher.update(length.toString().toString('binary'));
return new Buffer(stirhasher.digest('binary'), 'binary');
}
function getStirMap(mapBuffer) {
var currentByte = 0,
currentBit = 0;
return function (left, right) {
var result = mapBuffer[currentByte] & (Math.pow(2, currentBit));
currentBit += 1;
if (currentBit >= 8) {
currentBit = 0;
currentByte += 1;
if (currentByte >= mapBuffer.length) {
currentByte = 0;
}
}
return result ? 1 : -1;
}
}
var stirhash = hashes.getStirHash(key256, 3, 2);
var stir = stirmap(stirhash);
toStir.sort(stir);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment