码迷,mamicode.com
首页 > 其他好文 > 详细

模块hashlib和logging

时间:2018-09-02 01:58:23      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:多用户   encode   err   iges   等于   span   简单   logging模块   ica   

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

标签:多用户   encode   err   iges   等于   span   简单   logging模块   ica   

原文地址:https://www.cnblogs.com/feifeifeisir/p/9571911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!