# -*- coding:utf-8 -*-
# author:konmu
''' 密碼是如何加密後儲存起來的呢?請使用 python 對密碼加密。
'''import hashlib
from hmac import hmac
import random
def passwd_encrypt(password,salt=none):
if(salt is none):
salt = ''.join([chr(random.randint(48,122)) for i in range(20)])
safe_pass = hashlib.md5((password+salt).encode('utf-8')).hexdigest()[:10] #hashlib的方式
else:
safe_pass = hmac(bytes(password.encode('utf-8')),bytes(salt.encode('utf-8')),hashlib.md5).hexdigest()[:10]
#hmac演算法實現,這個演算法只能處理位元組型資料,所以要進行一下型別轉換
return(safe_pass)
if __name__ == "__main__":
old_pass = input("please input your password:")
salt = "iamsalt"
new_pass1 = passwd_encrypt(old_pass)
new_pass2 = passwd_encrypt(old_pass,salt)
print("your safe password:",new_pass1)
print("your safe password:",new_pass2)
please input your password:k0nmua4
your safe password: ea2cd5c2fb
your safe password: 1bf06bf616
由於通常我們註冊賬戶使用的密碼在8~18位,所以我們這裡選擇返回前10位做為密碼,長度上已符合
每日一練7
arraylist和linkedlist可想從名字分析,它們乙個是array 動態陣列 的資料結構,乙個是link 鍊錶 的資料結構,此外,它們兩個都是對list介面的實現。前者是陣列佇列,相當於動態陣列 後者為雙向鍊錶結構,也可當作堆疊 佇列 雙端佇列 當隨機訪問list時 get和set操作 a...
python每日一練
人生苦短,我用python 2018.6.5 有個目錄,裡面是你自己寫過的程式,統計一下你寫過多少行 包括空行和注釋,但是要分別列出來 coding utf 8 import re import glob defcodecolletion path filelist glob.glob path p...
Python每日一練
人生苦短,我用python 2018.6.13 最近事情有點多,有幾天沒寫了,正好最近需要統計一下各組排名,也就拿python代替手工了 各組給出其他組的排名,統計每個組最終的得分,第一名為0.5,第二名0.4,以此類推。coding utf 8 groups 3,2,5,4,6 1,3,5,6,4...