October 5, 2019
New word lists:
- Add the EFF FANDOM word lists as "unofficial"
- Add the newly merged Czech word list from BIPS-0039
- Add Romanian word list from Diceware
I have improved the EFF FANDOM word lists released in 2018. As of this
release, the EFF hasn't officially sanctioned the improvements (I think it may
have been a one-off for that one Dragoncon conference), so until they do, it
will be listed in the "Unofficial" option group in the drop down.
New features:
Bookmarklets for all pseudoword and random generators, no longer requiring you
to pull up the web page. As JavaScript security is vulnerable to malicious
hosts, having an offline password generator is preferred. I approached this
with bookmarklets. Due to 2 KB URL support in Internet Explorer and Edge
browsers, only the pseudoword and random generators are support. No passphrase
support yet.
Improvements:
Inspired by how Fourmilab Switzerland handles long strings in JavaScript,
I decided to do the same with the word lists I ship. Instead of two quotes and
a comma for every word in one massively large word list, intermediate word
lists are created based on word length (3-character words, 4-character words,
etc.), then the necessary word list is dynamically and deterministically
created, as I know how many characters make up a valid word in each
intermediate word list.
By removing 3 bytes per word, for a Diceware word list of 7,776 words, this is
a data savings of 23 KB per word list. Let the data speak for itself. Compare
the old byte size to the new byte size:
WORD LIST OLD -> NEW
========================================
alternate_colors.js 18923 -> 13045
alternate_elvish.js 67288 -> 38814
alternate_klingon.js 19809 -> 12271
alternate_pgp.js 5476 -> 4141
alternate_rockyou.js 77897 -> 54878
alternate_simpsons.js 44974 -> 30273
alternate_trump.js 74091 -> 49726
bitcoin_cn_simp.js 12311 -> 6294
bitcoin_cn_trad.js 12311 -> 6294
bitcoin_cz.js 19059 -> 13077
bitcoin_en.js 17230 -> 11259
bitcoin_es.js 18110 -> 12151
bitcoin_fr.js 20894 -> 14925
bitcoin_it.js 20147 -> 14177
bitcoin_jp.js 30537 -> 24578
bitcoin_kr.js 41946 -> 36000
diceware_beale.js 56253 -> 33115
diceware_bg.js 105500 -> 82346
diceware_ca.js 76066 -> 52934
diceware_cn.js 70123 -> 46936
diceware_cz.js 65785 -> 42632
diceware_da.js 56935 -> 33781
diceware_de.js 61074 -> 37931
diceware_en.js 56308 -> 33154
diceware_eo.js 66928 -> 43879
diceware_es.js 59223 -> 32505
diceware_et.js 60857 -> 37702
diceware_eu.js 63973 -> 40834
diceware_fi.js 63170 -> 40016
diceware_fr.js 60385 -> 37231
diceware_hu.js 56814 -> 33649
diceware_it.js 62466 -> 39308
diceware_jp.js 61923 -> 38769
diceware_la.js 70522 -> 47346
diceware_mi.js 67950 -> 44807
diceware_nl.js 62069 -> 0
diceware_nl_alt.js 62502 -> 39333
diceware_no.js 56226 -> 33061
diceware_pl.js 60852 -> 37698
diceware_pt.js 61617 -> 38475
diceware_ro.js 0 -> 39249
diceware_ru.js 99539 -> 76363
diceware_sk.js 78398 -> 55350
diceware_sl.js 62766 -> 39612
diceware_sv.js 57157 -> 34005
diceware_tr.js 60854 -> 37713
eff_distant.js 13389 -> 9699
eff_gameofthrones.js 34531 -> 22722
eff_harrypotter.js 34324 -> 22513
eff_long.js 77712 -> 54567
eff_short.js 9789 -> 6040
eff_startrek.js 35061 -> 23271
eff_starwars.js 33981 -> 22202
random_emoji.js 36533 -> 36517
total 2680558 -> 1769168
The old data totaled about 2.7 MB. The new data totals 1.8 MB, this is a 34%
reduction in data, over 900 KB. This is significant.
Bug fixes:
- Replace "you|to" with "peerio"
- Remove 3 duplicates and add 3 unique strings to the Spanish Diceware word list.
- Replace the Dutch word list with the composite alternate by Remko Tronçon.
- Replace a duplicate in both the Slovenian and Turkish word lists with "2a"
- Update Italian Diceware word list after finding a duplicate
- Rename Korean word list with correct ISO 639-1 2-letter code
- Enforce only unique elements in generated password array with ES6
Set()