random.randint() 返回隨機生成的一個實數算法
import random #調用模塊
def get_random_code(length=6):#變量爲6
data = []
for i in range(length):#循環6次
v = random.randint(65,90)#生成65-90之間隨機數字
data.append(chr(v))#將v變爲字符追加到data列表中
return ''.join(data)#將列表中元素連接,變爲空字符串
code = get_random_code()
print(code)#6位隨機字符
random.choice 從序列中隨機抽選一個函數 驗證碼,抽獎app
import random
print(random.choice([1,2,3,4,5]))
random.sample 一個獎項多我的dom
import random
print(random.sample([1,2,3,4],3)) # [3, 2, 4]
random.uniform 隨機小數ide
import random
print(random.uniform(1,5)) # 3.599380534928744
random.shuffle 將序列順序打亂 洗牌函數
random.random()生成0和1之間的隨機浮點數floatui
加密模塊。md5/sha編碼
import hashlib
md5 = hashlib.sha1('鹽'.encode())
md5.update(b'str')
print(md5.hexdigest())
兩個文件的md5值是相同的加密
import hashlib
md5 = hashlib.md5()
#md5.update('hello'.encode())
#md5.update('wusir'.encode())
md5.update('hello,wusir'.encode())
# 46879507bf541e351209c0cd56ac160e
46879507bf541e351209c0cd56ac160e
print(md5.hexdigest())
# 將指定的 「字符串」 進行加密
1 import hashlib 2 3 def get_md5(data): 4 obj = hashlib.md5()#md5對象,md5不能反解,可是加密是固定的,就是關係是一一對應,因此有缺陷,能夠被對撞出來,若是沒有參數,因此md5遵照一個規則,生成同一個對應關係, 5 #若是加了參數,就是在原先加密的基礎上再加密一層,這樣的話參數只有本身知道,防止被撞庫。 6 obj.update(data.encode('utf-8'))#要對哪一個字符串進行加密,就放這裏 7 result = obj.hexdigest()#拿到加密字符串 8 return result# 返回加密字符串 9 10 val = get_md5('123') 11 print(val)
# 應用,用戶登陸
import hashlib USER_LIST = [] def get_md5(data): obj = hashlib.md5("12:;4436ff123ad".encode('utf-8')) obj.update(data.encode('utf-8')) result = obj.hexdigest() return result def register(): print('**************用戶註冊**************')#提示 while True:#循環註冊 user = input('請輸入用戶名:')#輸入 if user == 'N':#判斷輸入是否爲N return #結束循環、函數 pwd = input('請輸入密碼:')#輸入密碼 temp = {'username':user,'password':get_md5(pwd)}#用戶名和密碼經過加密放在字典裏 USER_LIST.append(temp)#將字典追加到列表裏 def login(): print('**************用戶登錄**************')#提示 user = input('請輸入用戶名:')#輸入 pwd = input('請輸入密碼:') for item in USER_LIST:#循環列表裏的字典 if item['username'] == user and item['password'] == get_md5(pwd):#比較輸入的內容與字典裏是否同樣 return True register() result = login() if result:#判斷返回值是否爲真 print('登錄成功') else: print('登錄失敗')
hmac輸出的長度和原始哈希算法的長度一致。須要注意傳入的key和message都是bytes
類型,str
類型須要首先編碼爲bytes
。spa
import hmac
message = b'Hello world'
key = b'secret'
h = hmac.new(key,message,digestmod='MD5')
print(h.hexdigest())
time.time() 時間戳code
import time
v = time.time() # 時間戳:1970-1-1 00:00
import time
print(time.timezone) # -28800
time.sleep(2) 睡2秒
datetime.now() 當前本地時間
from datetime import datetime
v1 = datetime.now()
print(v1) # 2019-04-18 17:52:33.046206
timezone(timedelta(hours=7)) 獲取東7區時間
from datetime import datetime,timezone,timedelta
tz = timezone(timedelta(hours=7)) # 當前東7區時間
v2 = datetime.now(tz)
datetime.utcnow() 當前UTC時間
from datetime import datetime,timezone,timedelta
v3 = datetime.utcnow() # 當前UTC時間
print(v3)
strftime 把datetime格式轉換成字符串
from datetime import datetime,timezone,timedelta
v1 = datetime.now()
print(v1,type(v1))
val = v1.strftime("%Y-%m-%d %H:%M:%S")
print(val)
strptime 字符串轉成datetime
from datetime import datetime,timezone,timedelta
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
print(v1,type(v1))
timedelta datetime時間的加減
from datetime import datetime,timezone,timedelta
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
v2 = v1 - timedelta(days=140)
date = v2.strftime('%Y-%m-%d')
print(date)
時間戳和datetime關係
import time
from datetime import datetime,timezone,timedelta
ctime = time.time()
print(ctime)
v1 = datetime.fromtimestamp(ctime)
print(v1)
v1 = datetime.now()
val = v1.timestamp()
print(val)