<input id="0qass"><u id="0qass"></u></input>
  • <input id="0qass"><u id="0qass"></u></input>
  • <menu id="0qass"><u id="0qass"></u></menu>

    算法:凱撒密碼問題:通過把字母移動一定的位數來實現加密和解密。

    凱撒密碼問題:通過把字母移動一定的位數來實現加密和解密。

    凱撒密碼說明

    例如(移動3格):a-D、b-E、 c-F、d-G、e-H … … s-V … …、z-C
    明文:access control
    可變為: DFFHVV FRQWURO

    代碼

    import random
    def Letter_num(Letter):  # a-z轉換為0-25
        return ord(Letter) - 97
    
    
    def num_Letter(num):  # 0-25轉換為a-z
        return chr(num + 97)
    
    
    def encryption_Letter(P, K):  # 加密單個字母
        C = num_Letter((Letter_num(P) + K) % 26)
        return C
    
    
    def Decrypt_Letter(C, K):  # 解密單個字母
        P = num_Letter((Letter_num(C) - K) % 26)
        return P
    
    
    def encryption_fun(P_char, K):  # 加密字符串
        C_char = ''
        for P in P_char:
            if P.isalpha():
                P = encryption_Letter(P, K)
            C_char = C_char + P
        return C_char
    
    
    def Decrypt_fun(C_char, K):  # 解密字符串
        P_char = ''
        for C in C_char:
            if C.isalpha():
                C = Decrypt_Letter(C, K)
            P_char = P_char + C
        return P_char
    
    
    if __name__ == '__main__':
        K = int(random.random()*26%26)
        P_text = "let's meet after the party.if you understand this sentence, the program runs successfully.abcd efghjgkl mnopqr stu vwxy z"
        print('原文為:',P_text)
        print('K:',K)
        C_text = encryption_fun(P_text, K)
        print('密文為:', C_text)
        PP_text = Decrypt_fun(C_text, K)
        print('解密后是:', PP_text)
    
    

    結果

    原文為: let's meet after the party.if you understand this sentence, the program runs successfully.abcd efghjgkl mnopqr stu vwxy z
    K: 14
    密文為: zsh'g assh othsf hvs dofhm.wt mci ibrsfghobr hvwg gsbhsbqs, hvs dfcufoa fibg giqqsggtizzm.opqr stuvxuyz abcdef ghi jklm n
    解密后是: let's meet after the party.if you understand this sentence, the program runs successfully.abcd efghjgkl mnopqr stu vwxy z
    
    
    • 10
      點贊
    • 9
      評論
    • 9
      收藏
    • 一鍵三連
      一鍵三連
    • 掃一掃,分享海報

    ??2020 CSDN 皮膚主題: 程序猿惹誰了 設計師:白松林 返回首頁
    實付
    使用余額支付
    點擊重新獲取
    掃碼支付
    錢包余額 0

    抵扣說明:

    1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。
    2.余額無法直接購買下載,可以購買VIP、C幣套餐、付費專欄及課程。

    余額充值
    多乐彩