Например, вы можете использовать модуль платформы для (почти) уникальной идентификации машины. Их ключом может быть шестнадцатеричный sha256 этого идентификатора, рассматриваемый в виде строки, например:
import hashlib
import platform
# Only an example, you can add whatever you want provided by the platform module to identify the machine
identifier = platform.platform()
key = hashlib.sha256(identifier.encode()).hexdigest()
Плюсы:
- Невозможно предоставить общий доступ
- Не может использоваться повторно
Минусы:
- Не соблюдает Принцип Керчкоффа
Следовательно, это означает, что Ваша система защищена, пока пользователь не знает, как самостоятельно вычислить идентификатор.
Вы можете разработать эту модель, используя, возможно, собственный сервер. Например, вы можете вычислить ключ на своем сервере, используя вычисленный вами идентификатор и секретную строку.
Плюсы:
- Вам не нужно хранить случайный ключ для каждого пользователь, вам просто нужно иметь доступ к его идентификатору
Минусы:
- Если ваш идентификатор недостаточно точен, два пользователя могут иметь один и тот же ключ
Чтобы решить эту проблему, вы можете определить случайную строку для каждого пользователя, которую вы добавляете к его идентификатору, но это означает, что вы должны хранить эту случайную строку для каждого пользователя.
Обратите внимание также что последние два решения используют внешний сервер. Следовательно, вы предполагаете, что сможете выполнять сетевые запросы.