X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=bip39-standalone.html;h=0da24437181736c881cac998976602e85ebb11cf;hb=fc7c248fafef4ba2aecf9dcf4718b3d4c91d94b0;hp=e8aaaa6583b45c04b1a22d43230138c800c1d039;hpb=ea87f1d32c4c7218e226376e5a5926c46672eae8;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/bip39-standalone.html b/bip39-standalone.html index e8aaaa6..0da2443 100644 --- a/bip39-standalone.html +++ b/bip39-standalone.html @@ -18324,9 +18324,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(""); @@ -18348,6 +18352,7 @@ window.Entropy = new (function() { binaryStr: entropyBin, cleanStr: entropyClean, cleanHtml: entropyHtml, + bitsPerEvent: bitsPerEvent, base: base, } return e; @@ -18440,7 +18445,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 = {}; @@ -18462,7 +18467,12 @@ window.Entropy = new (function() { } // Work out the total number of bits for this many decks // See http://crypto.stackexchange.com/q/41886 - var gainedBits = Math.log2(factorial(52 * numberOfDecks)); + var gainedBits = 0; + // Equivalent of Math.log2(factorial(52*numberOfDecks)) + // which becomes infinity for numberOfDecks > 4 + for (var i=1; i<=52*numberOfDecks; i++) { + gainedBits = gainedBits + Math.log2(i); + } var lostBits = 52 * Math.log2(factorial(numberOfDecks)); var maxBits = gainedBits - lostBits; // Convert the drawn cards to a binary representation. @@ -18509,7 +18519,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 @@ -19366,10 +19381,7 @@ window.Entropy = new (function() { } var entropyTypeStr = getEntropyTypeStr(entropy); var wordCount = Math.floor(numberOfBits / 32) * 3; - var bitsPerEvent = Math.log2(entropy.base.asInt).toFixed(2); - if (entropy.base.asInt == 52) { - bitsPerEvent = bitsPerEvent + " (or less)"; - } + var bitsPerEvent = entropy.bitsPerEvent.toFixed(2); DOM.entropyFiltered.html(entropy.cleanHtml); DOM.entropyType.text(entropyTypeStr); DOM.entropyStrength.text(strength);