@researcher1111

Почему питон не дает зашифровать переменную?

При попытке скомпилировать вот это выдает ошибку:
a=''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(32))
secret = base64.b32decode(a)


Вот ошибка:
Traceback (most recent call last):
  File "python", line 11, in <module>
TypeError: Non-base32 digit found
  • Вопрос задан
  • 365 просмотров
Пригласить эксперта
Ответы на вопрос 2
@immaculate
Программист-путешественник
In [1]: len(string.ascii_uppercase + string.digits)
Out [1]: 36


Ответ очевиден: ваш алфавит не совпадает с алфавитом b32 encoding.
Ответ написан
Комментировать
@nirvimel
string.digits содержит символы 0, 1, 8, 9 недопустимые в кодировке Base32.
С 0, 1 можно побороться с помощью передачи True третьим аргументом в base64.b32decode (но частоты символов на выходе станут неравномерно распределенными при равномерном распределении рандома на входе).
Но 8, 9 все равно мешают. Проще задать вручную набор из оставшихся шести цифр.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы