Python3模块-random、hashlib和base64
random模块
random.random()用于生成一个浮点数x,范围为0 =< x < 1
import random
>>>print(random.random())
1.864001829819306
random.uniform(a,b)用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。
import random >>>print(random.uniform(1,10))
7.559074479037658
#其上限与下限参数位置可以改变,但生成的数值还是在范围之内
>>>print(random.uniform(10,1))
5.487835445265534
random.randint(a,b),用于生成一个范围内的整数,其中a必须大于等于b。
*
print(random.randint(1,5))
3
print(random.randint(5,1)
#引发一个ValueError
random.randrange([start],stop[,step])从一个集合中随机取出一个数字
import random >>>print(random.randrange(1,100))
22
>>>print(random.randrange(1,100,2)) #偶数集合在这里等效于random.choice(range(1,100,2))
16
random.choice(seq), seq是一个非空序列,如list、tuple、字符串等。如果为空,引发IndexError
import random
>>>print(random.choice('abcdefg'))
c
>>>print(random.choice('tom','jerry','lisa'))
tom
>>>print(random.choice(('a','b','c')))
c
random.shuffle(x[,random]),将一个list打乱重新组合,list还是原list,没有占用空间。
import random >>>alist = [1,2,3,4,5]
>>>random.shuffle(alist)
>>>print(alist)
[2, 5, 4, 3, 1]
random.sample(seq,k),从指定序列中随机获取指定长度的片段
import random a = [1,2,3,4,5]
>>>print(random,sample(a,3))
[3,1,5]
random更多方法参见官方docs:random module
hashlib模块
这个模块实现了一个通用的接口来实现多个不同的安全哈希和消息摘要算法。包括FIPS安全散列算法SHA1,SHA224,SHA256,SHA384和SHA512(在FIPS 180-2中定义)以及RSA的MD5算法
因为哈希在字节上工作,而不是字符,所以要使哈希工作在字符上,需要encode编码为utf-8,再以十六进制形式进行摘要计算
import hashlib str = 'mzc19971103'
md5 = hashlib.md5()
md5.update(str[0:5].encode('utf-8'))
md5.update(str[5:].encode('utf-8'))
print(md5.hexdigest()) sha1 = hashlib.sha1()
sha1.update('mzc19971103'.encode('utf-8'))
print(sha1.hexdigest())
处理字符串时还可以加盐,只要加盐字符串不被泄露,无法根据md5解析出字符串
import hashlib def calc_md5(password):
md5 = hashlib.md5()
md5.update(password.encode('utf-8'))
a = md5.hexdigest()
return a db = {} def writeindb(username, password):
db[username] = calc_md5(password+'woaini1997') #加盐
print(db)
def login(username, password):
p = calc_md5(password+'woaini1997')
if username in db and db[username] == p:
print('login succ')
else:
print('username or passwd error') def register():
username = input('input ur username:')
password = input('input ur password:')
if username in db:
print('account exit!')
else:
writeindb(username, password)
def logininput():
username = input('plz input ur account:')
password = input('plz input ur password:')
if username != "" and password != "":
login(username, password)
else:
print('uname or passwd not empty!') if __name__ == '__main__':
while True:
# username = input('plz input ur username:\n')
# password = input('plz input ur password:\n')
selec =input('register select:1 login select:2 quit plz select:3\n')
if selec == '':
register()
elif selec == '':
logininput()
elif selec == '':
break
hashlib更多用法参见:Python-hashlib
base64
此模块提供将二进制数据编码为可打印ASCII字符并将此类编码解码回二进制数据的功能。它为在 RFC 3548中指定的编码提供编码和解码功能,该编码定义了Base16,Base32和Base64算法,以及事实上的标准Ascii85和Base85编码.
base64可以直接编码
import base64 def safe_base64_encode(a): #base64编码函数
s = base64.b64encode(a)
print(s) safe_base64_encode(b'legend')
#打印结果:
b'bGVnZW5k'
解码:
import base64 def safe_base64_decode(a):
s = base64.b64decode(a)print(a) safe_base64_decode(b'bGVnZW5k') #打印结果:
b'legend'
base64.b64encode()和base64.b64decode()参数必须是类字节对象
由于标准的Base64编码后可能出现字符+和/,在URL中就不能直接作为参数,所以又有一种"url safe"的base64编码,其实就是把字符+和/分别变成-和_
>>> base64.b64encode(b'i\xb7\x1d\xfb\xef\xff')
b'abcd++//'
>>> base64.urlsafe_b64encode(b'i\xb7\x1d\xfb\xef\xff')
b'abcd--__'
>>> base64.urlsafe_b64decode('abcd--__')
b'i\xb7\x1d\xfb\xef\xff'
Base64编码原理与应用
Python3模块-random、hashlib和base64的更多相关文章
- Python全栈--7模块--random os sys time datetime hashlib pickle json requests xml
模块分为三种: 自定义模块 内置模块 开源模块 一.安装第三方模块 # python 安装第三方模块 # 加入环境变量 : 右键计算机---属性---高级设置---环境变量---path--分号+py ...
- python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则
python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess ...
- Python 自学基础(四)——time模块,random模块,sys模块,os模块,loggin模块,json模块,hashlib模块,configparser模块,pickle模块,正则
时间模块 import time print(time.time()) # 当前时间戳 # time.sleep(1) # 时间延迟1秒 print(time.clock()) # CPU执行时间 p ...
- python3.7 random模块
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 random模块 import random #随机模块 # r ...
- python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为
python接口自动化测试二十七:密码MD5加密 ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...
- 模块讲解---time模块,datetime模块,random模块,hashlib模块和hmac模块,typing模块,requests模块,re模块
目录 1. 包 2. time模块 1. 优先掌握 2. 了解 3. datetime模块 1. 优先掌握 4. random模块 1. 优先掌握 2. 了解 5. hashlib模块 ...
- oldboy edu python full stack s22 day16 模块 random time datetime os sys hashlib collections
今日内容笔记和代码: https://github.com/libo-sober/LearnPython/tree/master/day13 昨日内容回顾 自定义模块 模块的两种执行方式 __name ...
- Python3之random模块
一.简介 ramdom模块提供了一个随机数的函数:random() 它可以返回一个随机生成的实数,范围在[0,1)范围内.需要注意的是random()是不能直接访问的,需要导入模块random才可以使 ...
- python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块
正则表达式 语法: mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...
随机推荐
- http协议的状态码解释
一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务器超时 下面提供 HTTP 状态码的完整列表.点击链接可了解详情.您也可以访问 HTTP 状态码上的 ...
- progressBar显示百分比
this.lab_AllFiles.Text = progressBarAllFile.Value * 100 / progressBarAllFile.Maximum + "%" ...
- Educational Codeforces Round 25 E. Minimal Labels 拓扑排序+逆向建图
E. Minimal Labels time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- Educational Codeforces Round 23 D. Imbalanced Array 单调栈
D. Imbalanced Array time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Cannot set property 'onclick' of null的问题
转载自: https://my.oschina.net/ximidao/blog/351017 摘要: 测试点击事件的时候浏览器报错,提示Uncaught TypeError: Cannot set ...
- 《深入理解JVM虚拟机》读书笔记
前言:<深入理解JVM虚拟机>是JAVA的经典著作之一,因为内容更偏向底层,所以之前一直没有好好的阅读过.最近因为刚好有空,又有了新目标.所以打算和<构架师的12项修炼>一起看 ...
- Java Virtual Machine(Java虚拟机)
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. Java语言 ...
- SpringBoot中加密com.github.ulisesbocchio
Jasypt Spring Boot 为 Spring Boot 项目中的属性源(property sources)提供加密支持. 有三种方法可以在项目中集成 jasypt-spring-boot: ...
- SQL创建索引和删除索引
使用CREATE 语句创建索引 CREATE INDEX index_name ON table_name(column_name,column_name) include(score) 普通索引 C ...
- js几个小技巧和坑
蝴蝶书看了,也知道充满了毒瘤和糟粕,但该用还是得用. 实际写了几天,小技巧记录下来.都是在py里有直接答案,不会遇到的问题,没想到js里这么费事. 还是要多读<ES6标准入门> 1判断ob ...