Python模块介绍一

  

模块讲解

  

进口时间   

打印(time.time ())
打印(时间。strftime (Y ' % - % - % d % X ')) # 2018-10-25 15:06:16 Y代表,m为嘴,d为天,X为时间
c=time.localtime (time.time () + 3600 3) 24日
打印(c)

  

时间。struct_time (tm_year=2018, tm_mon=10, tm_mday=25日tm_hour=15, tm_min=7, tm_sec=20, tm_wday=3, tm_yday=298, tm_isdst=0)

  

struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

  

时间戳转化为结构化时间本地时间/gmtime

  

gmtime为世界标准时间,一般不使用。

  

本地时间为东八区时间,为我们所在的时间,常使用本地时间

  

打印(time.gmtime ())
打印(time.strptime (' 2018-10-20 ', ' % Y - % - % d '))

  

进口随机
打印(random.random()) #输出大于0且小于1之间的小数
打印(random.randint(1,6)) #随机输出大于等于1且小于等于5之间的整数,[1,5]
打印(random.randrange(1、3) #随机输出大于等于1且小于3之间的整数,(1、3)

  

打印(随机的。选择([1,2,[3,4]]))#随机取列表中的一个元素,结果为1或2者或者[3,4]
打印(随机的。样本([1,2,[3,4]],2))#随机取列表中任意2个元素
打印(随机的。制服(1、3)#随机取大于1小于3的小数
项=[1、2、3、4、5)
打印(random.shuffle(项目))#直接输出,什么都没有
random.shuffle(项)
打印(项)
打印(项)#再次打印结果和上一次输出结果一样,需要重新打乱才能输出重新排序的列表
random.shuffle(项)
打印(项)

  

#生成5位的随机码
def get_random_number ():
s="
我的范围(5):
num=str (random.randint (0, 9)
c1=科(random.randint (97122)
c2=科(random.randint (65、90))
rnum=random.choice ((num, c1, c2))
s +=rnum
打印(s)
get_random_number ()

  

“““
Hashlib
Python的Hashlib提供了常见的摘要算法,如MD5、SHA1等等。
什么是摘要算法呢?摘要算法又称哈希算法,散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
摘要算法就是通过摘要函数f()对任意长度的数据数据计算出固定长度的摘要消化,目的是为了发现原始数据是否被人篡改过。
摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算f(数据)很容易,但通过消化反推数据却非常困难。
而且,对原始数据做一个位的修改,都会导致计算出的摘要完全不同。
我们以常见的摘要算法MD5为例,计算出一个字符串的MD5值:
摘要算法应用:文件一致性校验,登录
任何允许用户登录的网站都会存储用户登录的用户名和口令。如何存储用户名和口令呢?方法是存到数据库表中:
名称|密码+
- - - - - - - - - - - - - - - - - - - - - michael |
123456
鲍勃| abc999
爱丽丝| alice2008
如果以明文保存用户口令,如果数据库泄露,所有用户的口令就落入* * *的手里。此外,网站运维人员是可以访问数据库的,也就是能获取到所有用户的口令。

  

正确的保存口令的方式是不存储用户的明文口令,而是存储用户口令的摘要,比如MD5:
用户名密码|
- - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
迈克尔| e10adc3949ba59abbe56e057f20f883e
鲍勃| 878年ef96e86145580c38c87f0410ad153
爱丽丝| 99年b1c2188db85afee403b1536010c2c9
考虑这么个情况,很多用户喜欢用123456年,888888年,密码这些简单的口令,于是,* * *可以事先计算出这些常用口令的MD5值,得到一个反推表:
' e10adc3949ba59abbe56e057f20f883e ': ' 123456 '
' 21218 cca77804d2ba1922c33e0151105 ': ' 888888 '
' 5 f4dcc3b5aa765d61d8327deb882cf99 ': '密码'
这样,无需破解,只需要对比数据库的MD5, * * *就获得了使用常用口令的用户账号。
对于用户来讲,当然不要使用过于简单的口令。但是,我们能否在程序设计上对简单口令加强保护呢?
由于常用口令的MD5值很容易被计算出来,所以,要确保存储的用户口令不是那些已经被计算出来的常用口令的MD5,这一方法通过对原始口令加一个复杂字符串来实现,俗称“加盐”:1
hashlib.md5 (“salt" .encode (“utf8")) #“加盐”的内容此时是盐,也可以为账户名xuyaping,字符串,数字1等等
经过盐处理的MD5口令,只要盐不被* * *知道,即使用户输入简单口令,也很难通过MD5反推明文口令。

  

但是如果有两个用户都使用了相同的简单口令比如123456年在数据库中,将存储两条相同的MD5值,这说明这两个用户的口令是一样的。

Python模块介绍一