1.2K
現今網路有越來越多的網站,每個不同的網站往往會要求使用者辦理帳號,像筆者我一個人就擁有超過十種網路帳號,有的人會將全部的密碼都設同一組,方便記錄,但萬一其中一個帳號被盜用,就全部的會被盜用。
我自己就有這樣的困擾,剛好當時在學Python就想說能不能用Python去撰寫一套將文字加密與解密的程式,希望能夠將自己的密碼能夠好好保存下來,即便被人知道我的加密結果前後的文字,也無法拆解出加密過程,最終網路查詢多筆資料做到了這份加密與解密系統。
將自己的密碼全部加密起來後,統一存在一份線上文件中,只要有需要,我在任何地方打開電腦,下載自己做的加解密軟體,即可找出自己的密碼。
其中的k是我的密鑰,可以依自己的需求,設定一組亂碼,也正是有這份亂碼,保障加密系統的獨特性。
也有透過凱薩加密的原理去設計這套系統。
import base64
import getpass
# 加密
def enctry(s):
k = 'Z&sg6nu7A79tP#g#a6Q@&1UejtVo^&ys*SH^sOtTW*!WiUGmS19L#j%2daBBFs!IlvS*!9u3Ht@qKVum'
encry_str = ""
for i,j in zip(s,k): # i為字符,j為秘鑰字符
temp = str(ord(i)+ord(j))+'_' # 加密字符 = 字符的Unicode碼 + 秘鑰的Unicode碼
encry_str = encry_str + temp
s1 = base64.b64encode(encry_str.encode("utf-8"))
return s1
# 解密
def dectry(s2):
p = base64.b64decode(s2).decode("utf-8")
k = 'Z&sg6nu7A79tP#g#a6Q@&1UejtVo^&ys*SH^sOtTW*!WiUGmS19L#j%2daBBFs!IlvS*!9u3Ht@qKVum'
dec_str = ""
for i,j in zip(p.split("_")[:-1],k): # i 為加密字符,j為秘鑰字符
temp = chr(int(i) - ord(j)) # 解密字符 = (加密Unicode碼字符 - 秘鑰字符的Unicode碼)的單字節字符
dec_str = dec_str+temp
return dec_str
def ask():
ans = input("請選擇 1.加密 2.解密(輸入數字):")
if ans == "1":
data = input("請輸入要加密密碼:")
enc_str = enctry(data)
dec_str = dectry(enc_str)
print("原始數據為:",data)
print("加密數據為:",enc_str)
print("檢查解密數據:",dec_str)
elif ans == "2":
data = input("請輸入要解密密碼:")
dec_str = dectry(data)
print("加密數據為:",data)
print("解密數據為:",dec_str)
if getpass.getpass("請輸入中文姓名(全小寫)") == "test":
if getpass.getpass("請輸入身份證字號") == "test":
if getpass.getpass("請輸入以前狗狗的名字(全小寫)") == "test":
while 1:
ask()
if input("是否再次輸入?(Y/N)") == "N":
break
else:
print("輸入錯誤")
else:
print("輸入錯誤")
else:
print("輸入錯誤")
input("輸入任意鍵已結束")
連結是我加密與解密的程式碼
運行系統:Python3.8