python学習の道-一意の識別を自動的に生成(md 5暗号化方式)
2288 ワード
前言
pythonがデータベースに格納される場合、データベースのプライマリ・キーが自己増加方式ではない場合は、独自の識別子を生成する必要があります.現在、md 5暗号化によって生成された32ビットをプライマリ・キーとして使用するのが最善の方法です.pythonの2つの自動的な一意の識別を生成する方法について説明します.
python MD 5暗号化方法
方法を説明する前にpythonがデータをmd 5暗号化する方法について説明します.
依存パッケージ:
使用方法:
方法1:
依存パッケージ:
使用方法:
インテリジェントポイント
uuidは128ビットのグローバル一意識別子(univeral unique identifier)であり、通常32ビットの文字列の形式で表現される.guid(global unique identifier)とも呼ばれることがある.pythonにはuuidの生成と管理を行うためにuuidモジュールが付属しています.
pythonのuuidモジュールは、MACアドレス、タイムスタンプ、ネーミングスペース、乱数、擬似乱数などの情報に基づいてuuidを生成する.具体的な方法は以下の通りです.
uuid.uuid 1()はMACアドレス,タイムスタンプ,乱数に基づいて一意のuuidを生成し,世界的な一意性を保証し,欠点はmacアドレスを暴露する.
uuid.uuid 2()アルゴリズムはuuid 1と同様であり,タイムスタンプの上位4位置をPOSIXのUIDに置き換えるのとは異なる.ただし、pythonにはDCEベースのアルゴリズムがないため、pythonのuuidモジュールにはuuid 2という方法はありません.
uuid.uuid 3(namespace,name)は、名前空間と名前のmd 5ハッシュ値を計算することによってuuidを与える
uuid.uuid 4()は擬似乱数によりuuidを得,一定の確率で繰り返される.
uuid.uuid 5(namespace,name)とuuid 3はほぼ同じであるが,採用したハッシュアルゴリズムはsha 1である.
---------------------
参照ドキュメント:https://www.cnblogs.com/hellojesson/p/6410445.html
https://www.cnblogs.com/franknihao/p/7307224.html
方法2:
依存パッケージ:
使用方法:
//osで26文字をランダムに生成しmd 5を暗号化
知識点:
os.urandom(n)関数
関数の位置付け:Return a string of n random bytes suitable for cryptographic use.つまり、n個のbyteほど長いstringを返します.
文書では、osというライブラリにまとめられたMiscellaneous Functionsは、異なる種類の関数(ミキシング関数とも言える)を意味する.理由は、This function returns random bytes from an OS-specific randomness sourceである.(関数が返すランダムバイトは、異なるオペレーティングシステムによって特定されるランダム関数リソースである.すなわち、この関数はOS内部に付属するランダム関数を呼び出すものである.特異性がある)----参照文書:https://blog.csdn.net/a19990412/article/details/80934268
pythonがデータベースに格納される場合、データベースのプライマリ・キーが自己増加方式ではない場合は、独自の識別子を生成する必要があります.現在、md 5暗号化によって生成された32ビットをプライマリ・キーとして使用するのが最善の方法です.pythonの2つの自動的な一意の識別を生成する方法について説明します.
python MD 5暗号化方法
方法を説明する前にpythonがデータをmd 5暗号化する方法について説明します.
依存パッケージ:
import hashlib
使用方法:
def md5(string):
#
string = string.encode(encoding ='UTF-8')
# md5
print(hashlib.md5(string))
# md5
string = hashlib.md5(string).hexdigest()
方法1:
依存パッケージ:
import uuid
使用方法:
# ,uuid1 mac mac
id = uuid.uuid1()
# - 32
id = id.replace('-','')
インテリジェントポイント
uuidは128ビットのグローバル一意識別子(univeral unique identifier)であり、通常32ビットの文字列の形式で表現される.guid(global unique identifier)とも呼ばれることがある.pythonにはuuidの生成と管理を行うためにuuidモジュールが付属しています.
pythonのuuidモジュールは、MACアドレス、タイムスタンプ、ネーミングスペース、乱数、擬似乱数などの情報に基づいてuuidを生成する.具体的な方法は以下の通りです.
uuid.uuid 1()はMACアドレス,タイムスタンプ,乱数に基づいて一意のuuidを生成し,世界的な一意性を保証し,欠点はmacアドレスを暴露する.
uuid.uuid 2()アルゴリズムはuuid 1と同様であり,タイムスタンプの上位4位置をPOSIXのUIDに置き換えるのとは異なる.ただし、pythonにはDCEベースのアルゴリズムがないため、pythonのuuidモジュールにはuuid 2という方法はありません.
uuid.uuid 3(namespace,name)は、名前空間と名前のmd 5ハッシュ値を計算することによってuuidを与える
uuid.uuid 4()は擬似乱数によりuuidを得,一定の確率で繰り返される.
uuid.uuid 5(namespace,name)とuuid 3はほぼ同じであるが,採用したハッシュアルゴリズムはsha 1である.
---------------------
参照ドキュメント:https://www.cnblogs.com/hellojesson/p/6410445.html
https://www.cnblogs.com/franknihao/p/7307224.html
方法2:
依存パッケージ:
import hashlib
import os
使用方法:
//osで26文字をランダムに生成しmd 5を暗号化
id = hashlib.md5(os.urandom(26)).hexdigest()
知識点:
os.urandom(n)関数
関数の位置付け:Return a string of n random bytes suitable for cryptographic use.つまり、n個のbyteほど長いstringを返します.
文書では、osというライブラリにまとめられたMiscellaneous Functionsは、異なる種類の関数(ミキシング関数とも言える)を意味する.理由は、This function returns random bytes from an OS-specific randomness sourceである.(関数が返すランダムバイトは、異なるオペレーティングシステムによって特定されるランダム関数リソースである.すなわち、この関数はOS内部に付属するランダム関数を呼び出すものである.特異性がある)----参照文書:https://blog.csdn.net/a19990412/article/details/80934268