Рубрики
Без рубрики

Новый модуль секретов Python

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Python 3.6 Добавлен новый модуль под названием Секреты Это разработано «Чтобы обеспечить очевидный способ надежно генерировать криптографически прочные псевдослучайные значения, подходящие для управления секретами, такими как аутентификация счета, токены и аналогичные« » Отказ Python’s Случайные Модуль никогда не был предназначен для криптографического использования, но для моделирования и моделирования. Конечно, вы всегда можете использовать Urandom () Функция из модуля ОС Python:

>>> import os
>>> os.urandom(8)
'\x9c\xc2WCzS\x95\xc8'

Но теперь, когда у нас есть модуль секретов, мы можем создавать наши собственные «криптографически сильные псевдослучайные значения». Вот простой пример:

>>> import secrets
>>> import string
>>> characters = string.ascii_letters + string.digits
>>> bad_password = ''.join(secrets.choice(characters) for i in range(8))
>>> bad_password
'SRvM54Z1'

В этом примере мы импортируем Секреты и строка модули. Далее мы создаем строку прописных букв и целых чисел. Наконец, мы используем метод выбора модуля Secrets (), чтобы выбрать символы случайным образом для генерации плохого пароля. Причина, по которой я вызываю этот плохой пароль, потому что мы не добавляем символы для пароля. Это на самом деле довольно приличный по сравнению с тем, что пользуется многими людьми. Одним из моих читателей отметила, что еще одна причина, по которой это можно было считать, что пользователь, вероятно, просто напишет его на листе бумаги. Хотя это может быть правдой, использование словарных слов, как правило, настоятельно обескуражено, поэтому вы должны научиться использовать такие пароли, или инвестировать в надежный менеджер паролей.

Генерация токенов с секретами

Модуль секретов также обеспечивает несколько методов генерации токенов. Вот несколько примеров:

Token_Bytes Функция вернет строку случайной байты, содержащую количество NBYTES. Я не поставил несколько байтов в первый пример, поэтому Python выбрал для меня разумное число. Затем я попытался позвонить в это снова и просить 8 байтов. Следующая функция, которую мы пробовали, это Token_hex , что вернет случайную строку в шестнадцатеричном. Последняя функция это Token_urlsafe который вернет случайную текстовую строку безопасной URL. Текст Base64 закодирован тоже! Обратите внимание, что на практике вы, вероятно, должны использовать как минимум 32 байта для своих токенов для них, чтобы они были защищены от атаки Brute-Force ( Источник ).

Упаковка

Модуль секретов – это достойное дополнение к Python. Честно говоря, я думал, что что-то подобное должно было быть добавлено давно. Но, по крайней мере, теперь у нас есть и теперь мы можем благополучно генерировать криптографически сильные токены и пароли. Займите некоторое время, чтобы проверить документацию для этого модуля, поскольку у него есть несколько веселых рецептов для игры.

Связанные чтения