Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用してシークレットを管理するための安全な乱数を生成する


安全な乱数を暗号的に生成するために、秘密を使用できます。 Pythonのモジュール。このモジュールは、安全なパスワード、アカウント認証、セキュリティトークン、または関連するシークレットを作成するのに役立ちます。

シークレットモジュールのクラスとモジュールを使用するには、そのモジュールをコードにインポートする必要があります。

import secrets

乱数

秘密 モジュールは、ランダム性の安全なソースにアクセスするために使用されます。これはオペレーティングシステムによって提供されます。

シークレットモジュールの乱数に関連するクラスと関数は-

です。

クラスシークレット。SystemRandom

これは、いくつかの最高品質のソースを使用して、乱数を生成するクラスです。これらのソースはオペレーティングシステムによって提供されます。

メソッドsecrets.choice(sequence)

この方法は、空でないシーケンスからランダムに要素を選択するために使用されます。

メソッドsecrets.randbelow(n)

このメソッドは、0からn(排他的)の範囲から1つの整数値を選択するために使用されます。

メソッドsecrets.randbits(k)

このメソッドは、k個のランダムビットを持つ整数を返すために使用されます。

トークンの生成

秘密 モジュールは、いくつかの安全なトークンを生成することもできます。これらのタイプのトークンは、パスワードのリセット、複雑なURLなどを生成するのに役立ちます。

トークン生成に関連するいくつかのメソッドは-

です。

メソッドsecrets.token_bytes([nbytes =None])

このメソッドは、安全なトークンを生成するためにnbytesのランダムなバイト文字列を返します。 nbytes値が指定されていない場合、指定されたデフォルト値が使用されます。

メソッドsecrets.token_hex([nbytes =None])

このメソッドは、16進形式のランダムなテキスト文字列を返します。返される文字列には、nbytesのランダムバイトが含まれます。各文字は2桁の16進数に変換できます。 nbytes値が指定されていない場合、指定されたデフォルト値が使用されます。

メソッドsecrets.token_urlsafe([nbytes =None])

このメソッドは、ランダムなURLセーフテキスト文字列を返すために使用されます。テキストは基本的にBase64でエンコードされています。平均すると、各バイトの結果は1.3文字(約)になります。

サンプルコード

import secrets
my_sequence = ['K','?','D',':','o','5','t','l','Y','0']
rand_pass = ''
for i in range(15):
   rand_char = secrets.choice(my_sequence)
   rand_pass += rand_char
print("Random Password is: " + rand_pass)
my_tok1 = secrets.token_hex(10) #Create HEX token of length 10 
my_tok2 = secrets.token_hex(5) #Create HEX token of length 5
print("First Token: " + my_tok1)
print("First Token: " + my_tok2)
のHEXトークンを作成します

出力

Random Password is: YK0l:YD??lKKY?o
First Token: f3e68646dcf1082e1038
First Token: e4ae3c2384

  1. Pythonを使用して素数を生成する方法は?

    素数は、1とそれ自体を除く他の数で割り切れない数です。 Pythonでは、%モジュロ演算子を使用して、数値が他の除算可能かどうかをテストできます。 1から100までの素数を見つける必要があると仮定すると、範囲内の各数(xとしましょう)は、2からx-1で除算できるかどうかを連続してチェックする必要があります。これは、2つのネストされたループを使用することで実現されます。 for x in range(1,101): for y in range(2,x): if x%y==0:break else: print (x,sep=' ', end=' ') 上

  2. Pythonはどのように乱数を生成しますか?

    Pythonの標準配布には、乱数生成機能を備えたランダムモジュールがあります。基本的なrandom()関数は、0から1までのランダムな浮動小数点数を返します >>> import random >>> random.random() 0.5204702770265925 同じモジュールから、連続する範囲の間の乱数を返すrandrange()関数があります。 >>> random.randrange(0,10) 4 リストまたはタプルからアイテムをランダムに選択するchoice()関数もあります >>> random.ch