序文
hashlibとログモジュールでロギングモジュール、かつての暗号化モジュールと、
今、企業は、プログラマの多くは、MD5暗号化を使用している一般的であるが、Pythonのhashlibモジュールで多くの暗号化アルゴリズムがあります。
MD5()、SHA1()、SHA224()、SHA256()、SHA384()、SHA512()、Blake2b()、Blake2s()、
Sha3_224、Sha3_256、Sha3_384、Sha3_512、Shake_128、そしてShake_256。
知人のhashlibモジュール
1、hashlib:MD5暗号化アルゴリズムのモジュールの概要を示します。
- 要約機能は常に同じであるか異なるアルゴリズム、どんなに。
- 同じ文字列に対してダイジェストアルゴリズムを使用して、得られた値は常に一定です。
- 同じ文字列ダイジェストのための異なるアルゴリズムを用いて、得られた値は異なるべきです。
- どんなにどのようなアルゴリズム、永遠hashlibの方法。
2、暗号化の役割は何ですか?
- 1、パスワード/ ID番号やその他の暗号化されたデータ
- 2、ファイルの整合性を確認します。
- - 私たちは、リモートサーバーと一貫性のダウンロード時間上のファイルをダウンロードしたファイルかどうかをチェックします
- - あなたは2つのファイルが等しいかどうかを確認したい二つのマシン上の2つのファイル
二、hashlib MD5暗号化モジュール
1、読書は、MD5印刷処理を暗号化:
同じ文字列を暗号化した後、あなたが結果を印刷するたびに同じです。
インポートhashlib MD5 = hashlib.md5() md5.update(B ' gsxl ' ) プリント(md5.hexdigest())
2、パスワードの暗号化プロセスのアカウントとログインアカウントの例を登録:
実際には、ここではMD5暗号化と暗号化されたパスワードにログインするためのパスワードを入力するようにユーザを取ることですが、比較に格納されます。
#登録アカウントのパスワードの暗号化、ファイル書き込み のインポートはhashlib ユーザー = INPUT(' あなたの登録したアカウントを入力してください。' ) passwdの = INPUT(' あなたのパスワードを設定します。' ) オープンでは、(R " G:\ Python_projects \ python_study \研究を\ study_python \ python_Basics \のUserInfo ' ' A ')AS :F MD5 = (hashlib.md5) md5.update(バイト(passwdを、エンコード = ' 。UTF-8 ' )) f.write(ユーザー + ' | " ) F .WRITE(md5.hexdigest()) f.write(「N- \ 」) #パスワードを読み込み、ログインが成功すると右側に、ログインアカウントを比較した場合、パスワードを入力します。 USER_NAME = INPUT(' ログインアカウント:' ) パスワード = INPUT(' パスワード:' ) を使用 = '' PWD = '' オープン(R&LTとの' G:\ Python_projects \ python_study \研究\ study_python \ python_Basics \のUserInfo ')AS F: のために、私は中にF: 私は = i.strip() を使用、PWD = i.split(' | ' ) IF USER_NAMEを==使用: MD5 = hashlib.md5() md5.update(バイト(パスワード、エンコード = ' UTF-8。' )) md5_pwd = md5.hexdigest() IF USER_NAME == == md5_pwd利用とPWD: 印刷(' ログイン成功' ) それ以外:印刷(「アカウントまたはパスワードが間違っ!」) それ以外:印刷(「アカウントが存在しません!」)
3、MD5可動静的塩、セキュリティを向上させます
#3、可動MD5塩静的、セキュリティ向上 インポートhashlib MD5 = hashlib.md5((バイト' gsxl ' =コード、' UTF-を8 ')+ B ' 123456 ' ) md5.update(B ' 123456 ' ) 印刷()(md5.hexdigest)
二、ロギングモジュールのログ
- 「ワンクリック」制御することができます
- あなたが助けを私のトラブルシューティングするために多くの詳細を印刷する必要がある場合のトラブルシューティング
- 深刻なエラーが記録さ
- 一部のユーザーがあり、何も間違った行動を記録する必要がありますがあります
1、5つのレベルのロギング:
#1、ロギングは5レベル: インポートログ logging.debug(「デバッグ-下位レベル」) #の低レベルのデバッグ情報の logging.info(「情報-通常の情報") #通常の情報 logging.warning(」警告- -警告「) #の警告情報 logging.error(」エラー-エラーメッセージ「) #のエラーメッセージ logging.critical(」重大なエラーをcritical-- ") #のハイレベルの重大なエラーメッセージ
2、例
#2、实例 #%A、%D%B%Y%のH:%M:%S インポートロギング logging.basicConfig(レベル = logging.DEBUG、 フォーマット = ' %(いるasctime)S%(ファイル名)S ' ' [行:%(LINENO)D]%(levelname)S%(メッセージ)S ' datefmt = ' %Y-%M-%D%H:%M:%のS ' ) 試す: INT(入力(' 请输入你的密码:' )) を除くとValueError: logging.error(' pwd_typeエラー")
添付ファイルのパラメータと形式のフォーマットにbasicConfig:
:Aは、ロギングモジュールの特定のパラメータにより、デフォルトの動作を変更することができますにbasicConfig()関数をロギング、パラメータが用意されてい たファイル名:指定したファイル名作成FiledHandlerで、このログは、指定したファイルに保存されています。 ファイルモード:ファイルを開くが、このパラメータは、ファイル名で指定され、デフォルト値は「」また、「W」として指定することができます。 フォーマット:ログハンドラは、表示形式を指定しました。 datefmt:日付と時刻の形式を指定します。 レベル:設定rootlogger(背後にある特定の概念を説明します)ログレベルの ストリーム:StreamHandlerのは、指定されたストリームを使用して作成。sys.stderrを持ち、sys.stdoutのか、ファイル(Fへの出力を指定することができます = 、オープン( 'test.log'、 'W'))デフォルトsys.stderrを持ちます。両方のリストのファイル名とストリーム2つのパラメータと、ストリームのパラメータは無視されます。 第二は、フォーマットパラメータ文字列形式を使用することができる: %(name)はSロガーの名前である %(levelno)Sログレベルデジタル形式 %(levelname)Sログレベルテキスト形式 %(パス名)コールログ出力関数Sモジュールのフルパス名でなくてもよい %ファイル名と呼ばれるモジュールログ出力関数S(ファイル名) %を(モジュール)のモジュール名のログ出力機能の呼び出し %を(FUNCNAME)Sは、ログ出力関数の関数名呼び出し %コール文の出力機能ログインするコード(LINENO)D線 %UNIX標準を使用して、F現在時刻を(作成します)時間を表す小数点数浮動 %を、ロガーDからのミリ秒数は、作成したときに出力ログ情報(relativeCreated) %現在時刻の(いるasctime)ストリングS。デフォルトの形式は「2003-07-0816:49:45896です。」カンマの後のミリ %(スレッド)DスレッドID。それは持っていないかもしれません %(のthreadName)Sのスレッド名を。持っていないかもしれません %DプロセスID(プロセス)。月ではない %(メッセージ)■ユーザ出力メッセージ
3、カスタマイズされたログ
#3、ロギングカスタマイズ #は中国語に書き込むことができる インポートログ ログ = logging.getLogger() #インスタンス化オブジェクト F = logging.FileHandler(「py.log 」 =コード、「UTF-を8 」) #ファイルハンドル H logging.StreamHandler =() #作成コンソールオブジェクトハンドル format_f = logging.Formatter( #の出力フォーマット ' %(いるasctime)S%(ファイル名)S ' ' [ライン:%(LINENO)D]%(levelname)S% (メッセージ)S " ) f.setFormatter(format_f) #fのフォーマットされた出力オブジェクトを渡すために h.setFormatter(format_f) #フォーマットされた出力オブジェクトh渡す log.addHandler(F) # log.addHandler(H) logging.debug(' デバッグ-下位レベル') #低レベルのデバッグ情報 logging.info(「インフォメーション-正常情報」) #通常の情報 logging.warning(「warning--警告メッセージ」) #の警告情報 logging.error(「エラー-エラーメッセージ」) #のエラーメッセージ logging.critical("重大なエラーをcritical-- ") #ハイレベルクリティカル・エラー・メッセージ
みんなのQQ交換基へようこそ一緒に勉強します:482 713 805