2 ms·
Whether it is flipped or not seems to depend entirely on how it ended up being shuffled. Maybe that's why you don't use Javascript Math.Random() for cryptograp
by vardump 10y ago
Whether it is flipped or not seems to depend entirely on how it ended up being shuffled.
Maybe that's why you don't use Javascript Math.Random() for cryptographic purposes? :-)
Shuffle function:
function doShuffle() {
var startTime = Date.now();
var pixels = shuffledImage.data;
while (shuffleStartColumn < width) {
// Pick a random column j in the range [i, width) and move it to position i.
// This Fisher-Yates shuffle is the less efficient than the Durstenfeld shuffle but more animatedly appealing.
var i = shuffleStartColumn;
var j = i + Math.floor(Math.random() * (width - i));
for (var y = 0; y < height; y++) {
for (var x = j - 1; x >= i; x--) {
var off = (y * width + x) * 4;
for (var k = 0; k < 4; k++) {
var temp = pixels[off + k];
pixels[off + k] = pixels[off + 4 + k];
pixels[off + 4 + k] = temp;
}
}
}
shuffleStartColumn++;
if (Date.now() - startTime > YIELD_AFTER_TIME)
break;
}