mirror of
https://github.com/OneKeyHQ/bip39.git
synced 2026-04-16 15:32:16 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1e5d48491 | ||
|
|
fe81f9b320 | ||
|
|
20f459ce8f | ||
|
|
ee42e5f712 | ||
|
|
c0386f3b78 | ||
|
|
56b1275f40 | ||
|
|
bba46401ad | ||
|
|
0163fe6a38 |
@@ -118,7 +118,7 @@
|
||||
<div class="container">
|
||||
|
||||
<h1 class="text-center">Mnemonic Code Converter</h1>
|
||||
<p class="version">v0.1.0</p>
|
||||
<p class="version">v0.1.1</p>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@@ -169,8 +169,8 @@
|
||||
<div class="col-sm-7">
|
||||
<textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 control-label" data-translate>Strength</label>
|
||||
<div class="strength col-sm-3 form-control-static"></div>
|
||||
<label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
|
||||
<div class="crack-time col-sm-3 form-control-static"></div>
|
||||
<label class="col-sm-3 control-label" data-translate>Event Count</label>
|
||||
<div class="event-count col-sm-3 form-control-static"></div>
|
||||
</div>
|
||||
@@ -181,7 +181,7 @@
|
||||
<div class="bits-per-event col-sm-3 form-control-static"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 control-label" data-translate>Word Count</label>
|
||||
<label class="col-sm-3 control-label" data-translate>Raw Entropy Words</label>
|
||||
<div class="word-count col-sm-3 form-control-static"></div>
|
||||
<label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
|
||||
<div class="bits col-sm-3 form-control-static"></div>
|
||||
@@ -19912,6 +19912,16 @@ bitcoin.networks.dash = {
|
||||
wif: 0xcc,
|
||||
};
|
||||
|
||||
bitcoin.networks.dashtn = {
|
||||
bip32: {
|
||||
public: 0x043587cf,
|
||||
private: 0x04358394
|
||||
},
|
||||
pubKeyHash: 0x8c,
|
||||
scriptHash: 0x13,
|
||||
wif: 0xef,
|
||||
};
|
||||
|
||||
bitcoin.networks.game = {
|
||||
bip32: {
|
||||
public: 0x0488b21e,
|
||||
@@ -43754,7 +43764,7 @@ window.Entropy = new (function() {
|
||||
DOM.entropy = $(".entropy");
|
||||
DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
|
||||
DOM.entropyType = DOM.entropyContainer.find(".type");
|
||||
DOM.entropyStrength = DOM.entropyContainer.find(".strength");
|
||||
DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
|
||||
DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
|
||||
DOM.entropyBits = DOM.entropyContainer.find(".bits");
|
||||
DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
|
||||
@@ -44639,7 +44649,7 @@ window.Entropy = new (function() {
|
||||
}
|
||||
|
||||
function clearEntropyFeedback() {
|
||||
DOM.entropyStrength.text("...");
|
||||
DOM.entropyCrackTime.text("...");
|
||||
DOM.entropyType.text("");
|
||||
DOM.entropyWordCount.text("0");
|
||||
DOM.entropyEventCount.text("0");
|
||||
@@ -44651,37 +44661,15 @@ window.Entropy = new (function() {
|
||||
|
||||
function showEntropyFeedback(entropy) {
|
||||
var numberOfBits = entropy.binaryStr.length;
|
||||
var strength = "extremely weak";
|
||||
if (numberOfBits >= 64) {
|
||||
strength = "very weak";
|
||||
}
|
||||
if (numberOfBits >= 96) {
|
||||
strength = "weak";
|
||||
}
|
||||
if (numberOfBits >= 128) {
|
||||
strength = "strong";
|
||||
}
|
||||
if (numberOfBits >= 160) {
|
||||
strength = "very strong";
|
||||
}
|
||||
if (numberOfBits >= 192) {
|
||||
strength = "extremely strong";
|
||||
}
|
||||
// If time to crack is less than one day, and password is considered
|
||||
// strong or better based on the number of bits, rename strength to
|
||||
// 'easily cracked'.
|
||||
var timeToCrack = "unknown";
|
||||
try {
|
||||
var z = zxcvbn(entropy.base.parts.join(""));
|
||||
var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second;
|
||||
if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) {
|
||||
strength = "easily cracked";
|
||||
if (z.feedback.warning != "") {
|
||||
strength = strength + " - " + z.feedback.warning;
|
||||
};
|
||||
}
|
||||
timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
|
||||
if (z.feedback.warning != "") {
|
||||
timeToCrack = timeToCrack + " - " + z.feedback.warning;
|
||||
};
|
||||
}
|
||||
catch (e) {
|
||||
strength = "unknown";
|
||||
console.log("Error detecting entropy strength with zxcvbn:");
|
||||
console.log(e);
|
||||
}
|
||||
@@ -44690,7 +44678,7 @@ window.Entropy = new (function() {
|
||||
var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
|
||||
DOM.entropyFiltered.html(entropy.cleanHtml);
|
||||
DOM.entropyType.text(entropyTypeStr);
|
||||
DOM.entropyStrength.text(strength);
|
||||
DOM.entropyCrackTime.text(timeToCrack);
|
||||
DOM.entropyEventCount.text(entropy.base.ints.length);
|
||||
DOM.entropyBits.text(numberOfBits);
|
||||
DOM.entropyWordCount.text(wordCount);
|
||||
@@ -44837,6 +44825,13 @@ window.Entropy = new (function() {
|
||||
DOM.bip44coin.val(5);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "DASH Testnet",
|
||||
onSelect: function() {
|
||||
network = bitcoin.networks.dashtn;
|
||||
DOM.bip44coin.val(1);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Ethereum",
|
||||
onSelect: function() {
|
||||
|
||||
11
changelog.md
11
changelog.md
@@ -1,5 +1,10 @@
|
||||
# 0.1.1
|
||||
|
||||
* Add DASH Testnet
|
||||
* Change entropy Strength to Time To Crack
|
||||
|
||||
# 0.1.0 2017-06-14
|
||||
|
||||
Add changelog
|
||||
Display version number in top right
|
||||
Add hex prefix to ethereum keys
|
||||
* Add changelog
|
||||
* Display version number in top right
|
||||
* Add hex prefix to ethereum keys
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
<div class="container">
|
||||
|
||||
<h1 class="text-center">Mnemonic Code Converter</h1>
|
||||
<p class="version">v0.1.0</p>
|
||||
<p class="version">v0.1.1</p>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@@ -165,8 +165,8 @@
|
||||
<div class="col-sm-7">
|
||||
<textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 control-label" data-translate>Strength</label>
|
||||
<div class="strength col-sm-3 form-control-static"></div>
|
||||
<label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
|
||||
<div class="crack-time col-sm-3 form-control-static"></div>
|
||||
<label class="col-sm-3 control-label" data-translate>Event Count</label>
|
||||
<div class="event-count col-sm-3 form-control-static"></div>
|
||||
</div>
|
||||
@@ -177,7 +177,7 @@
|
||||
<div class="bits-per-event col-sm-3 form-control-static"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 control-label" data-translate>Word Count</label>
|
||||
<label class="col-sm-3 control-label" data-translate>Raw Entropy Words</label>
|
||||
<div class="word-count col-sm-3 form-control-static"></div>
|
||||
<label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
|
||||
<div class="bits col-sm-3 form-control-static"></div>
|
||||
|
||||
@@ -45,6 +45,16 @@ bitcoin.networks.dash = {
|
||||
wif: 0xcc,
|
||||
};
|
||||
|
||||
bitcoin.networks.dashtn = {
|
||||
bip32: {
|
||||
public: 0x043587cf,
|
||||
private: 0x04358394
|
||||
},
|
||||
pubKeyHash: 0x8c,
|
||||
scriptHash: 0x13,
|
||||
wif: 0xef,
|
||||
};
|
||||
|
||||
bitcoin.networks.game = {
|
||||
bip32: {
|
||||
public: 0x0488b21e,
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
DOM.entropy = $(".entropy");
|
||||
DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
|
||||
DOM.entropyType = DOM.entropyContainer.find(".type");
|
||||
DOM.entropyStrength = DOM.entropyContainer.find(".strength");
|
||||
DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
|
||||
DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
|
||||
DOM.entropyBits = DOM.entropyContainer.find(".bits");
|
||||
DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
|
||||
@@ -915,7 +915,7 @@
|
||||
}
|
||||
|
||||
function clearEntropyFeedback() {
|
||||
DOM.entropyStrength.text("...");
|
||||
DOM.entropyCrackTime.text("...");
|
||||
DOM.entropyType.text("");
|
||||
DOM.entropyWordCount.text("0");
|
||||
DOM.entropyEventCount.text("0");
|
||||
@@ -927,37 +927,15 @@
|
||||
|
||||
function showEntropyFeedback(entropy) {
|
||||
var numberOfBits = entropy.binaryStr.length;
|
||||
var strength = "extremely weak";
|
||||
if (numberOfBits >= 64) {
|
||||
strength = "very weak";
|
||||
}
|
||||
if (numberOfBits >= 96) {
|
||||
strength = "weak";
|
||||
}
|
||||
if (numberOfBits >= 128) {
|
||||
strength = "strong";
|
||||
}
|
||||
if (numberOfBits >= 160) {
|
||||
strength = "very strong";
|
||||
}
|
||||
if (numberOfBits >= 192) {
|
||||
strength = "extremely strong";
|
||||
}
|
||||
// If time to crack is less than one day, and password is considered
|
||||
// strong or better based on the number of bits, rename strength to
|
||||
// 'easily cracked'.
|
||||
var timeToCrack = "unknown";
|
||||
try {
|
||||
var z = zxcvbn(entropy.base.parts.join(""));
|
||||
var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second;
|
||||
if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) {
|
||||
strength = "easily cracked";
|
||||
if (z.feedback.warning != "") {
|
||||
strength = strength + " - " + z.feedback.warning;
|
||||
};
|
||||
}
|
||||
timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
|
||||
if (z.feedback.warning != "") {
|
||||
timeToCrack = timeToCrack + " - " + z.feedback.warning;
|
||||
};
|
||||
}
|
||||
catch (e) {
|
||||
strength = "unknown";
|
||||
console.log("Error detecting entropy strength with zxcvbn:");
|
||||
console.log(e);
|
||||
}
|
||||
@@ -966,7 +944,7 @@
|
||||
var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
|
||||
DOM.entropyFiltered.html(entropy.cleanHtml);
|
||||
DOM.entropyType.text(entropyTypeStr);
|
||||
DOM.entropyStrength.text(strength);
|
||||
DOM.entropyCrackTime.text(timeToCrack);
|
||||
DOM.entropyEventCount.text(entropy.base.ints.length);
|
||||
DOM.entropyBits.text(numberOfBits);
|
||||
DOM.entropyWordCount.text(wordCount);
|
||||
@@ -1113,6 +1091,13 @@
|
||||
DOM.bip44coin.val(5);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "DASH Testnet",
|
||||
onSelect: function() {
|
||||
network = bitcoin.networks.dashtn;
|
||||
DOM.bip44coin.val(1);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Ethereum",
|
||||
onSelect: function() {
|
||||
|
||||
77
tests.js
77
tests.js
@@ -351,7 +351,7 @@ page.open(url, function(status) {
|
||||
return $(".address:first").text();
|
||||
});
|
||||
if (actual != expected) {
|
||||
console.log("Litecoin address is incorrect");
|
||||
console.log("Ripple address is incorrect");
|
||||
console.log("Expected: " + expected);
|
||||
console.log("Actual: " + actual);
|
||||
fail();
|
||||
@@ -601,6 +601,35 @@ page.open(url, function(status) {
|
||||
});
|
||||
},
|
||||
|
||||
function() {
|
||||
page.open(url, function(status) {
|
||||
// set the phrase and coin
|
||||
var expected = "yaR52EN4oojdJfBgzWJTymC4uuCLPT29Gw";
|
||||
page.evaluate(function() {
|
||||
$(".phrase").val("abandon abandon ability");
|
||||
$(".phrase").trigger("input");
|
||||
$(".network option[selected]").removeAttr("selected");
|
||||
$(".network option").filter(function() {
|
||||
return $(this).html() == "DASH Testnet";
|
||||
}).prop("selected", true);
|
||||
$(".network").trigger("change");
|
||||
});
|
||||
// check the address is generated correctly
|
||||
waitForGenerate(function() {
|
||||
var actual = page.evaluate(function() {
|
||||
return $(".address:first").text();
|
||||
});
|
||||
if (actual != expected) {
|
||||
console.log("DASH Testnet address is incorrect");
|
||||
console.log("Expected: " + expected);
|
||||
console.log("Actual: " + actual);
|
||||
fail();
|
||||
}
|
||||
next();
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
// Network can be set to game
|
||||
function() {
|
||||
page.open(url, function(status) {
|
||||
@@ -725,7 +754,7 @@ page.open(url, function(status) {
|
||||
// this private key can be imported into
|
||||
// https://www.myetherwallet.com/#view-wallet-info
|
||||
// and it should correlate to the address above
|
||||
var expected = "8f253078b73d7498302bb78c171b23ce7a8fb511987d2b2702b731638a4a15e7";
|
||||
var expected = "0x8f253078b73d7498302bb78c171b23ce7a8fb511987d2b2702b731638a4a15e7";
|
||||
var actual = page.evaluate(function() {
|
||||
return $(".privkey:first").text();
|
||||
});
|
||||
@@ -2795,7 +2824,7 @@ page.open(url, function(status) {
|
||||
events: 1,
|
||||
bits: 4,
|
||||
words: 0,
|
||||
strength: "extremely weak",
|
||||
strength: "less than a second",
|
||||
},
|
||||
{
|
||||
entropy: "AAAAAAAA",
|
||||
@@ -2804,7 +2833,7 @@ page.open(url, function(status) {
|
||||
events: 8,
|
||||
bits: 32,
|
||||
words: 3,
|
||||
strength: "extremely weak",
|
||||
strength: "less than a second - Repeats like \"aaa\" are easy to guess",
|
||||
},
|
||||
{
|
||||
entropy: "AAAAAAAA B",
|
||||
@@ -2813,7 +2842,7 @@ page.open(url, function(status) {
|
||||
events: 9,
|
||||
bits: 36,
|
||||
words: 3,
|
||||
strength: "extremely weak",
|
||||
strength: "less than a second - Repeats like \"aaa\" are easy to guess",
|
||||
},
|
||||
{
|
||||
entropy: "AAAAAAAA BBBBBBBB",
|
||||
@@ -2822,7 +2851,7 @@ page.open(url, function(status) {
|
||||
events: 16,
|
||||
bits: 64,
|
||||
words: 6,
|
||||
strength: "very weak",
|
||||
strength: "less than a second - Repeats like \"aaa\" are easy to guess",
|
||||
},
|
||||
{
|
||||
entropy: "AAAAAAAA BBBBBBBB CCCCCCCC",
|
||||
@@ -2831,7 +2860,7 @@ page.open(url, function(status) {
|
||||
events: 24,
|
||||
bits: 96,
|
||||
words: 9,
|
||||
strength: "weak",
|
||||
strength: "less than a second",
|
||||
},
|
||||
{
|
||||
entropy: "AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD",
|
||||
@@ -2840,7 +2869,7 @@ page.open(url, function(status) {
|
||||
events: 32,
|
||||
bits: 128,
|
||||
words: 12,
|
||||
strength: "easily cracked",
|
||||
strength: "2 minutes",
|
||||
},
|
||||
{
|
||||
entropy: "AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDA",
|
||||
@@ -2849,7 +2878,7 @@ page.open(url, function(status) {
|
||||
events: 32,
|
||||
bits: 128,
|
||||
words: 12,
|
||||
strength: "strong",
|
||||
strength: "2 days",
|
||||
},
|
||||
{
|
||||
entropy: "AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDA EEEEEEEE",
|
||||
@@ -2858,7 +2887,7 @@ page.open(url, function(status) {
|
||||
events: 40,
|
||||
bits: 160,
|
||||
words: 15,
|
||||
strength: "very strong",
|
||||
strength: "3 years",
|
||||
},
|
||||
{
|
||||
entropy: "AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDA EEEEEEEE FFFFFFFF",
|
||||
@@ -2867,7 +2896,7 @@ page.open(url, function(status) {
|
||||
events: 48,
|
||||
bits: 192,
|
||||
words: 18,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
{
|
||||
entropy: "7d",
|
||||
@@ -2875,7 +2904,7 @@ page.open(url, function(status) {
|
||||
events: 1,
|
||||
bits: 5,
|
||||
words: 0,
|
||||
strength: "extremely weak",
|
||||
strength: "less than a second",
|
||||
},
|
||||
{
|
||||
entropy: "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqsks",
|
||||
@@ -2883,7 +2912,7 @@ page.open(url, function(status) {
|
||||
events: 52,
|
||||
bits: 225,
|
||||
words: 21,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
{
|
||||
entropy: "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqsks3d",
|
||||
@@ -2891,7 +2920,7 @@ page.open(url, function(status) {
|
||||
events: 53,
|
||||
bits: 254,
|
||||
words: 21,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
{
|
||||
entropy: "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqs3d4d",
|
||||
@@ -2899,7 +2928,7 @@ page.open(url, function(status) {
|
||||
events: 53,
|
||||
bits: 254,
|
||||
words: 21,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
{
|
||||
entropy: "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqs3d4d5d6d",
|
||||
@@ -2907,7 +2936,7 @@ page.open(url, function(status) {
|
||||
events: 53,
|
||||
bits: 264,
|
||||
words: 24,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
// Next test was throwing uncaught error in zxcvbn
|
||||
// Also tests 451 bits, ie Math.log2(52!)*2 = 225.58 * 2
|
||||
@@ -2917,7 +2946,7 @@ page.open(url, function(status) {
|
||||
events: 104,
|
||||
bits: 499,
|
||||
words: 45,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
// Case insensitivity to duplicate cards
|
||||
{
|
||||
@@ -2926,7 +2955,7 @@ page.open(url, function(status) {
|
||||
events: 2,
|
||||
bits: 9,
|
||||
words: 0,
|
||||
strength: "extremely weak",
|
||||
strength: "less than a second",
|
||||
},
|
||||
{
|
||||
entropy: "ASas",
|
||||
@@ -2934,7 +2963,7 @@ page.open(url, function(status) {
|
||||
events: 2,
|
||||
bits: 9,
|
||||
words: 0,
|
||||
strength: "extremely weak",
|
||||
strength: "less than a second",
|
||||
},
|
||||
// Missing cards are detected
|
||||
{
|
||||
@@ -2943,7 +2972,7 @@ page.open(url, function(status) {
|
||||
events: 51,
|
||||
bits: 221,
|
||||
words: 18,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
{
|
||||
entropy: "ac2c3c4c5c6c7c8c tcjcqckcad2d3d4d 6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqsks",
|
||||
@@ -2951,7 +2980,7 @@ page.open(url, function(status) {
|
||||
events: 50,
|
||||
bits: 216,
|
||||
words: 18,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
{
|
||||
entropy: "ac2c3c4c5c6c7c8c tcjcqckcad2d3d4d 6d7d8d9dtdjd kdah2h3h 5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqsks",
|
||||
@@ -2959,7 +2988,7 @@ page.open(url, function(status) {
|
||||
events: 48,
|
||||
bits: 208,
|
||||
words: 18,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
// More than six missing cards does not show message
|
||||
{
|
||||
@@ -2968,7 +2997,7 @@ page.open(url, function(status) {
|
||||
events: 45,
|
||||
bits: 195,
|
||||
words: 18,
|
||||
strength: "extremely strong",
|
||||
strength: "centuries",
|
||||
},
|
||||
// Multiple decks of cards increases bits per event
|
||||
{
|
||||
@@ -3012,7 +3041,7 @@ page.open(url, function(status) {
|
||||
events: 33,
|
||||
bits: 184,
|
||||
bitsPerEvent: 5.59,
|
||||
strength: 'easily cracked - Repeats like "abcabcabc" are only slightly harder to guess than "abc"',
|
||||
strength: 'less than a second - Repeats like "abcabcabc" are only slightly harder to guess than "abc"',
|
||||
},
|
||||
];
|
||||
// use entropy
|
||||
|
||||
Reference in New Issue
Block a user