秘密

秘密 の Python

{other: "%{count}個の演習"}

秘密について

前の概念では、randomモジュールを取り上げました。これは疑似乱数と、疑似ランダムな配列の並びを生成するモジュールです。

secretsモジュールは、その機能の一部でrandomと重なりますが、2つのモジュールはまったく異なる優先順位で設計されています。

  • randomは、モデリングやシミュレーションで高い性能を発揮するように最適化されており、疑似乱数の生成は「十分に良い」レベルです。
  • secretsは、パスワードのハッシュ化、セキュリティトークンの生成、アカウントの認証といった用途に向けて、暗号学的に安全になるよう設計されています。

secretsモジュールの追加が必要になった理由の詳細は、PEP 506に書かれています。

secretsモジュールは比較的小さく、わかりやすい作りで、ランダムな整数、ビット、バイト、トークン、あるいは与えられたシーケンスからランダムな要素を1つ取り出すメソッドを備えています。

secretsを使うには、まずimportする必要があります。

>>> import secrets

# Returns n, where 0 <= n < 1000.
>>> secrets.randbelow(1000) 
577

# 32-bit integers.
>>> secrets.randbits(32) 
3028709440

>>> bin(secrets.randbits(32))
'0b11111000101100101111110011110100'

# Pick at random from a sequence.
>>> secrets.choice(['my', 'secret', 'thing']) 
'thing'

# Generate a token made up of random hexadecimal digits.
>>> secrets.token_hex() 
'f683d093ea9aa1f2607497c837cf11d7afaefa903c5805f94b64f068e2b9e621'

# Generate a URL-safe token of random alphanumeric characters.
>>> secrets.token_urlsafe(16) 
'gkSUKRdiPDHqmImPi2HMnw'

セキュリティに関わるアプリケーションを書いているなら、詳しいドキュメントをぜひ読んでみてください。さらなるアドバイスと例が載っています。

GitHubで編集 リンクは新しいウィンドウまたはタブで開きます