aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/js/index.js42
1 files changed, 21 insertions, 21 deletions
diff --git a/src/js/index.js b/src/js/index.js
index edd70c5..472d392 100644
--- a/src/js/index.js
+++ b/src/js/index.js
@@ -1450,27 +1450,27 @@
1450 } 1450 }
1451 1451
1452 function writeSplitPhrase(phrase) { 1452 function writeSplitPhrase(phrase) {
1453 var wordCount = phrase.split(/\s/g).length; //get number of words in phrase 1453 var wordCount = phrase.split(/\s/g).length;
1454 var left=[]; //initialize array of indexs 1454 var left=[];
1455 for (var i=0;i<wordCount;i++) left.push(i); //add all indexs to array 1455 for (var i=0;i<wordCount;i++) left.push(i);
1456 var group=[[],[],[]], //make array for 3 groups 1456 var group=[[],[],[]],
1457 groupI=-1; //initialize group index 1457 groupI=-1;
1458 var seed = Math.abs(sjcl.hash.sha256.hash(phrase)[0])% 2147483647; //start seed at sudo random value based on hash of words 1458 var seed = Math.abs(sjcl.hash.sha256.hash(phrase)[0])% 2147483647;
1459 while (left.length>0) { //while indexs left 1459 while (left.length>0) {
1460 groupI=(groupI+1)%3; //get next group to insert index into 1460 groupI=(groupI+1)%3;
1461 seed = seed * 16807 % 2147483647; //change random value.(simple predicatable random number generator works well for this use) 1461 seed = seed * 16807 % 2147483647;
1462 var selected=Math.floor(left.length*(seed - 1) / 2147483646); //get index in left we will use for this group 1462 var selected=Math.floor(left.length*(seed - 1) / 2147483646);
1463 group[groupI].push(left[selected]); //add index to group 1463 group[groupI].push(left[selected]);
1464 left.splice(selected,1); //remove selected index 1464 left.splice(selected,1);
1465 } 1465 }
1466 var cards=[phrase.split(/\s/g),phrase.split(/\s/g),phrase.split(/\s/g)];//make array of cards 1466 var cards=[phrase.split(/\s/g),phrase.split(/\s/g),phrase.split(/\s/g)];
1467 for (var i=0;i<3;i++) { //go through each card 1467 for (var i=0;i<3;i++) {
1468 for (var ii=0;ii<wordCount/3;ii++) cards[i][group[i][ii]]='XXXX'; //erase words listed in the group 1468 for (var ii=0;ii<wordCount/3;ii++) cards[i][group[i][ii]]='XXXX';
1469 cards[i]='Card '+(i+1)+': '+wordArrayToPhrase(cards[i]); //combine words on card back to string 1469 cards[i]='Card '+(i+1)+': '+wordArrayToPhrase(cards[i]);
1470 } 1470 }
1471 DOM.splitPhrase.val(cards.join("\r\n")); //make words visible 1471 DOM.splitPhrase.val(cards.join("\r\n"));
1472 var triesPerSecond=10000000000; //assumed number of tries per second 1472 var triesPerSecond=10000000000;
1473 var hackTime=Math.pow(2,wordCount*10/3)/triesPerSecond; //get number of bits of unknown data per card 1473 var hackTime=Math.pow(2,wordCount*10/3)/triesPerSecond;
1474 if (hackTime<1) { 1474 if (hackTime<1) {
1475 hackTime="<1 second"; 1475 hackTime="<1 second";
1476 } else if (hackTime<86400) { 1476 } else if (hackTime<86400) {