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
string.digits
содержит символы 0
, 1
, 8
, 9
недопустимые в кодировке Base32.0
, 1
можно побороться с помощью передачи True
третьим аргументом в base64.b32decode
(но частоты символов на выходе станут неравномерно распределенными при равномерном распределении рандома на входе).8
, 9
все равно мешают. Проще задать вручную набор из оставшихся шести цифр.