X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git;a=blobdiff_plain;f=src%2Fjs%2Fentropy.js;h=b7274bbea7ccb5781aa084b45d0219d5e99e4e0e;hp=d04d861dfa16b44f23b41398ebaa2418b3b129e1;hb=94959756408aa60be4118ab1dceff4e71c6afdbf;hpb=dedae1a9d604773143d13b496feeafd7b85084f4 diff --git a/src/js/entropy.js b/src/js/entropy.js index d04d861..b7274bb 100644 --- a/src/js/entropy.js +++ b/src/js/entropy.js @@ -120,9 +120,13 @@ window.Entropy = new (function() { while (entropyBin.length < expectedBits) { entropyBin = "0" + entropyBin; } + // Calculate the number of bits per event + var bitsPerEvent = Math.log2(base.asInt); // Cards binary must be handled differently, since they're not replaced if (base.asInt == 52) { - entropyBin = getCardBinary(base.parts); + var cardEntropy = processCardEntropy(base.parts); + entropyBin = cardEntropy.binaryStr; + bitsPerEvent = cardEntropy.bitsPerEvent; } // Supply a 'filtered' entropy string for display purposes var entropyClean = base.parts.join(""); @@ -144,6 +148,7 @@ window.Entropy = new (function() { binaryStr: entropyBin, cleanStr: entropyClean, cleanHtml: entropyHtml, + bitsPerEvent: bitsPerEvent, base: base, } return e; @@ -236,7 +241,7 @@ window.Entropy = new (function() { // total possible entropy is measured using n!, not base^n. // eg the second last card can be only one of two, not one of fifty two // so the added entropy for that card is only one bit at most - function getCardBinary(cards) { + function processCardEntropy(cards) { // Track how many instances of each card have been used, and thus // how many decks are in use. var cardCounts = {}; @@ -305,7 +310,12 @@ window.Entropy = new (function() { } // Truncate to the appropriate number of bits. entropyBin = entropyBin.substring(0, numberOfBits); - return entropyBin; + // Get the number of bits per event + bitsPerEvent = maxBits / totalCards; + return { + binaryStr: entropyBin, + bitsPerEvent: bitsPerEvent, + } } // Polyfill for Math.log2