用Python將自己的密碼加密與解密

by 龍冥

現今網路有越來越多的網站,每個不同的網站往往會要求使用者辦理帳號,像筆者我一個人就擁有超過十種網路帳號,有的人會將全部的密碼都設同一組,方便記錄,但萬一其中一個帳號被盜用,就全部的會被盜用。

我自己就有這樣的困擾,剛好當時在學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

Related Posts

Copyright © 2024 龍冥 | 本站採用 reCAPTCHA保護機制 隱私權&條款