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的更多相关文章

  1. Python全栈--7模块--random os sys time datetime hashlib pickle json requests xml

    模块分为三种: 自定义模块 内置模块 开源模块 一.安装第三方模块 # python 安装第三方模块 # 加入环境变量 : 右键计算机---属性---高级设置---环境变量---path--分号+py ...

  2. 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 ...

  3. Python 自学基础(四)——time模块,random模块,sys模块,os模块,loggin模块,json模块,hashlib模块,configparser模块,pickle模块,正则

    时间模块 import time print(time.time()) # 当前时间戳 # time.sleep(1) # 时间延迟1秒 print(time.clock()) # CPU执行时间 p ...

  4. python3.7 random模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 random模块 import random #随机模块 # r ...

  5. 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 ...

  6. 模块讲解---time模块,datetime模块,random模块,hashlib模块和hmac模块,typing模块,requests模块,re模块

    目录 1. 包 2. time模块   1. 优先掌握 2. 了解 3. datetime模块   1. 优先掌握 4. random模块   1. 优先掌握   2. 了解 5. hashlib模块 ...

  7. oldboy edu python full stack s22 day16 模块 random time datetime os sys hashlib collections

    今日内容笔记和代码: https://github.com/libo-sober/LearnPython/tree/master/day13 昨日内容回顾 自定义模块 模块的两种执行方式 __name ...

  8. Python3之random模块

    一.简介 ramdom模块提供了一个随机数的函数:random() 它可以返回一个随机生成的实数,范围在[0,1)范围内.需要注意的是random()是不能直接访问的,需要导入模块random才可以使 ...

  9. python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块

    正则表达式   语法:             mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...

随机推荐

  1. 1、iptables-netfilter基础

    .iptables: 包过滤型防火墙功能.四表五链 .iptables规则.规则管理工具.iptables命令 .iptables链管理.规则管理.查看等 .iptables匹配条件.目标.显式扩展. ...

  2. HDU 5573 Binary Tree(构造题)

    http://acm.hdu.edu.cn/showproblem.php?pid=5573 题意:给出一个满二叉树,根节点权值为1,左儿子为2*val,右儿子为2*val+1.现在有只青蛙从根节点出 ...

  3. 基于 Python 和 Pandas 的数据分析(7) --- Pickling

    上一节我们介绍了几种合并数据的方法. 这一节, 我们将重新开始不动产的例子. 在第四节中我们写了如下代码: import Quandl import pandas as pd fiddy_states ...

  4. sublime text3 license

    —– BEGIN LICENSE —– Michael Barnes Single User License EA7E-821385 8A353C41 872A0D5C DF9B2950 AFF6F6 ...

  5. python类的成员

    一.实例变量:简单的来说就是给对象赋值 class Person: def __init__(self, name, card_no, height, weight, address, laopo): ...

  6. 【C#】侦听文件系统更改通知 FileSystemWatcher 类

    using System; using System.IO; using System.Security.Permissions; public class Watcher { public stat ...

  7. 《剑指offer》第五十八题(翻转单词顺序)

    // 面试题58(一):翻转单词顺序 // 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. // 为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a ...

  8. 华硕N55SF 折腾记

    家里给老妈用的N55SL是2011年买的.这么多年了,最近一身毛病,最近来回折腾很多次.吐槽记录如下 1不定时花屏.闪屏,然后偶尔硬盘掉盘 (找不到硬盘,开机BIOS里).主要是使用一段时间之后发热, ...

  9. 清理SuperMap iclient 三维插件的缓存批处理

    在windows任何位置,新建一个文本文件,将下面内容复制到文本文件中并保存,然后修改该文本文件后缀为.bat,鼠标点击执行即可完成清理工作~ @echo off title 清理三维缓存 @echo ...

  10. java基础题集

    1.什么是java虚拟机?为什么java被称作是“平台无关的编程语言”? java虚拟机是一个可以执行java字节码的虚拟机进程.java源文件被编译成能被java虚拟机执行的字节码文件. java被 ...