模块hashlib和logging

Posted feifeifeisir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块hashlib和logging相关的知识,希望对你有一定的参考价值。

Python的hashlib提供了常见的摘要算法MD5。

我们以常见的摘要算法MD5为例,计算出一个字符串的MD5值:

import hashlib
md5=hashlib.md5()
md5.update(how to use md5 in python.encode(utf-8))
print(md5.hexdigest())

如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:

import hashlib
md5=hashlib.md5()
md5.update(how to use md5.encode(utf-8))
md5.update( in python.encode(utf-8))
print(md5.hexdigest())

>>>
cdbbdefc48242586611e311f84e921b0

考虑这么个情况,很多用户喜欢用123456,888888,password这些简单的口令,于是,黑客可以事先计算出这些常用口令的MD5值,得到一个反推表:

e10adc3949ba59abbe56e057f20f883e: 123456
21218cca77804d2ba1922c33e0151105: 888888
5f4dcc3b5aa765d61d8327deb882cf99: password

这样,无需破解,只需要对比数据库的MD5,黑客就获得了使用常用口令的用户账号.

由于常用口令的MD5值很容易被计算出来,所以,要确保存储的用户口令不是那些已经被计算出来的常用口令的MD5,这一方法通过对原始口令加一个复杂字符串来实现,俗称“加盐”:

例如一个简单的用户登录实例:

技术分享图片
import hashlib

SALT = b2erer3asdfwerxdf34sdfsdfs90
def md5(pwd):
    # 实例化对象
    obj = hashlib.md5(SALT)
    # 写入要加密的字节
    obj.update(pwd.encode(utf-8))
    # 获取密文
    return obj.hexdigest()  # c5395258d82599e5f1bec3be1e4dea4a

user = input("请输入用户名:")
pwd = input("请输入密码:")
if user == oldboy and md5(pwd) == c5395258d82599e5f1bec3be1e4dea4a:
    print(登录成功)
else:
    print(登录失败)
View Code

 

logging模块

import logging  
logging.debug(debug message)  
logging.info(info message)  
logging.warning(warning message)  
logging.error(error message)  
logging.critical(critical message) 

默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息。

import logging  
logging.basicConfig(level=logging.DEBUG,  
                    format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s,  
                    datefmt=%a, %d %b %Y %H:%M:%S,  
                    filename=/tmp/test.log,  
                    filemode=w)  
  
logging.debug(debug message)  
logging.info(info message)  
logging.warning(warning message)  
logging.error(error message)  
logging.critical(critical message)

 

以上是关于模块hashlib和logging的主要内容,如果未能解决你的问题,请参考以下文章

hashlib,configparser,logging模块

Python常用模块 hashlib,pymysql,logging和datetime模块习题检测

模块hashlib和logging

hashlib 模块 logging 模块 和 configparser模块

hashlib,configparser,logging模块

python hashlib模块 logging模块