mirror of
https://github.com/OneKeyHQ/bip39.git
synced 2026-04-28 13:20:41 +00:00
bitsPerEvent correct for multiple decks of cards
This commit is contained in:
+14
-7
@@ -18324,9 +18324,13 @@ window.Entropy = new (function() {
|
|||||||
while (entropyBin.length < expectedBits) {
|
while (entropyBin.length < expectedBits) {
|
||||||
entropyBin = "0" + entropyBin;
|
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
|
// Cards binary must be handled differently, since they're not replaced
|
||||||
if (base.asInt == 52) {
|
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
|
// Supply a 'filtered' entropy string for display purposes
|
||||||
var entropyClean = base.parts.join("");
|
var entropyClean = base.parts.join("");
|
||||||
@@ -18348,6 +18352,7 @@ window.Entropy = new (function() {
|
|||||||
binaryStr: entropyBin,
|
binaryStr: entropyBin,
|
||||||
cleanStr: entropyClean,
|
cleanStr: entropyClean,
|
||||||
cleanHtml: entropyHtml,
|
cleanHtml: entropyHtml,
|
||||||
|
bitsPerEvent: bitsPerEvent,
|
||||||
base: base,
|
base: base,
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
@@ -18440,7 +18445,7 @@ window.Entropy = new (function() {
|
|||||||
// total possible entropy is measured using n!, not base^n.
|
// 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
|
// 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
|
// 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
|
// Track how many instances of each card have been used, and thus
|
||||||
// how many decks are in use.
|
// how many decks are in use.
|
||||||
var cardCounts = {};
|
var cardCounts = {};
|
||||||
@@ -18509,7 +18514,12 @@ window.Entropy = new (function() {
|
|||||||
}
|
}
|
||||||
// Truncate to the appropriate number of bits.
|
// Truncate to the appropriate number of bits.
|
||||||
entropyBin = entropyBin.substring(0, numberOfBits);
|
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
|
// Polyfill for Math.log2
|
||||||
@@ -19366,10 +19376,7 @@ window.Entropy = new (function() {
|
|||||||
}
|
}
|
||||||
var entropyTypeStr = getEntropyTypeStr(entropy);
|
var entropyTypeStr = getEntropyTypeStr(entropy);
|
||||||
var wordCount = Math.floor(numberOfBits / 32) * 3;
|
var wordCount = Math.floor(numberOfBits / 32) * 3;
|
||||||
var bitsPerEvent = Math.log2(entropy.base.asInt).toFixed(2);
|
var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
|
||||||
if (entropy.base.asInt == 52) {
|
|
||||||
bitsPerEvent = (4.3381).toFixed(2); // log2(52! / 52)
|
|
||||||
}
|
|
||||||
DOM.entropyFiltered.html(entropy.cleanHtml);
|
DOM.entropyFiltered.html(entropy.cleanHtml);
|
||||||
DOM.entropyType.text(entropyTypeStr);
|
DOM.entropyType.text(entropyTypeStr);
|
||||||
DOM.entropyStrength.text(strength);
|
DOM.entropyStrength.text(strength);
|
||||||
|
|||||||
+13
-3
@@ -120,9 +120,13 @@ window.Entropy = new (function() {
|
|||||||
while (entropyBin.length < expectedBits) {
|
while (entropyBin.length < expectedBits) {
|
||||||
entropyBin = "0" + entropyBin;
|
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
|
// Cards binary must be handled differently, since they're not replaced
|
||||||
if (base.asInt == 52) {
|
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
|
// Supply a 'filtered' entropy string for display purposes
|
||||||
var entropyClean = base.parts.join("");
|
var entropyClean = base.parts.join("");
|
||||||
@@ -144,6 +148,7 @@ window.Entropy = new (function() {
|
|||||||
binaryStr: entropyBin,
|
binaryStr: entropyBin,
|
||||||
cleanStr: entropyClean,
|
cleanStr: entropyClean,
|
||||||
cleanHtml: entropyHtml,
|
cleanHtml: entropyHtml,
|
||||||
|
bitsPerEvent: bitsPerEvent,
|
||||||
base: base,
|
base: base,
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
@@ -236,7 +241,7 @@ window.Entropy = new (function() {
|
|||||||
// total possible entropy is measured using n!, not base^n.
|
// 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
|
// 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
|
// 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
|
// Track how many instances of each card have been used, and thus
|
||||||
// how many decks are in use.
|
// how many decks are in use.
|
||||||
var cardCounts = {};
|
var cardCounts = {};
|
||||||
@@ -305,7 +310,12 @@ window.Entropy = new (function() {
|
|||||||
}
|
}
|
||||||
// Truncate to the appropriate number of bits.
|
// Truncate to the appropriate number of bits.
|
||||||
entropyBin = entropyBin.substring(0, numberOfBits);
|
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
|
// Polyfill for Math.log2
|
||||||
|
|||||||
+1
-4
@@ -828,10 +828,7 @@
|
|||||||
}
|
}
|
||||||
var entropyTypeStr = getEntropyTypeStr(entropy);
|
var entropyTypeStr = getEntropyTypeStr(entropy);
|
||||||
var wordCount = Math.floor(numberOfBits / 32) * 3;
|
var wordCount = Math.floor(numberOfBits / 32) * 3;
|
||||||
var bitsPerEvent = Math.log2(entropy.base.asInt).toFixed(2);
|
var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
|
||||||
if (entropy.base.asInt == 52) {
|
|
||||||
bitsPerEvent = (4.3381).toFixed(2); // log2(52! / 52)
|
|
||||||
}
|
|
||||||
DOM.entropyFiltered.html(entropy.cleanHtml);
|
DOM.entropyFiltered.html(entropy.cleanHtml);
|
||||||
DOM.entropyType.text(entropyTypeStr);
|
DOM.entropyType.text(entropyTypeStr);
|
||||||
DOM.entropyStrength.text(strength);
|
DOM.entropyStrength.text(strength);
|
||||||
|
|||||||
Reference in New Issue
Block a user