You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If there are 382 words that start with 'a', then the entropy of the acrostic 'aaaaa' should be ln_2(382)*5. However, this is not what xkcdpass reports:
$ xkcdpass -V --acrostic 'a'
With the current options, your word list contains 382 words.
A 1 word password from this list will have roughly 8 (8.58 * 1) bits of entropy,
assuming truly random word selection.
anyone
$ xkcdpass -V --acrostic 'aaaaa'
With the current options, your word list contains 1910 words.
A 5 word password from this list will have roughly 54 (10.90 * 5) bits of entropy,
assuming truly random word selection.
amiable activism arise aspire ageless
(The correct answer would be 8.58 * 5 in the second example)
Currently, it computes the entropy as num_words * ln_2(sum of lengths of word lists for each letter in the acrostic).
The correct formula for the entropy is ln_2(# of words for letter 1) + ln_2(#of words for letter 2) + .... Separating length and num_words doesn't make sense in this setting.
The text was updated successfully, but these errors were encountered:
ilyagr
changed the title
Entropy calculation with acristics is wrong
Entropy calculation with acrostics is wrong
Nov 16, 2020
ifoptions.acrostic:
worddict=wordlist_to_worddict(wordlist)
entropy=0.0forcharinoptions.acrostic:
ifcharnotinworddict:
# Less confusing error message than 'math domain error'raiseValueError('No words in list start with letter `{}`.'.format(char))
entropy+=math.log(len(worddict[char]), 2)
print('The entropy with the acrostic is approximately', int(entropy), 'bits.')
else:
# Rest of the function
ilyagr
changed the title
Entropy calculation with acrostics is wrong
Entropy calculation with acrostic is wrong
Nov 16, 2020
If there are 382 words that start with 'a', then the entropy of the acrostic 'aaaaa' should be
ln_2(382)*5
. However, this is not whatxkcdpass
reports:(The correct answer would be 8.58 * 5 in the second example)
I believe the problem is here:
XKCD-password-generator/xkcdpass/xkcd_password.py
Lines 163 to 168 in 33c27be
Currently, it computes the entropy as
num_words * ln_2(sum of lengths of word lists for each letter in the acrostic)
.The correct formula for the entropy is
ln_2(# of words for letter 1) + ln_2(#of words for letter 2) + ...
. Separatinglength
andnum_words
doesn't make sense in this setting.The text was updated successfully, but these errors were encountered: