古典密碼 python實現維吉尼亞密碼

2021-10-25 10:34:17 字數 3125 閱讀 6994

def

secret()

:#加密過程

str=

input

("請輸入明文:"

) str_list =

list

(str

) k_list =

[x for x in

input

("請輸入金鑰流:"

).split()]

#輸入金鑰流,以空格為間隔

#print(k_list)

for i in

range

(len

(str_list)):

#判斷輸入金鑰為數字或者大小寫字母

a = i %

len(k_list)

if k_list[a]

.isdigit():

k =int(k_list[a]

)elif

64<

ord(str_list[a]

)<91:

k =ord(k_list[a])-

ord(

'a')

elif

96<

ord(k_list[a]

)<

123:

k =ord(k_list[a])-

ord(

'a')

else

:print

("非法字元"

)breakif(

96<

ord(str_list[i]

)<

123)

: str_list[i]

=chr((

ord(str_list[i])-

ord(

'a')

+ k)%26

+ord

('a'))

elif(64

<

ord(str_list[i]

)<91)

: str_list[i]

=chr((

ord(str_list[i])-

ord(

'a')

+ k)%26

+ord

('a'))

else

: str_list[i]

= str_list[i]

for i in

range

(len

(str_list)):

print

(str_list[i]

,end="")

print

(" "

)def

deciphering()

:#解密過程

str=

input

("請輸入密文:"

) str_list =

list

(str

) k_list =

[x for x in

input

("請輸入金鑰流:"

).split()]

#輸入金鑰流,以空格為間隔

#print(k_list)

for i in

range

(len

(str_list)):

#判斷輸入金鑰為數字或者大小寫字母

a = i %

len(k_list)

if k_list[a]

.isdigit():

k =int(k_list[a]

)elif

96<

ord(k_list[a]

)<

123:

k =ord(k_list[a])-

ord(

'a')

elif

64<

ord(str_list[a]

)<91:

k =ord(k_list[a])-

ord(

'a')

else

:print

("非法字元"

)break

if96

<

ord(str_list[i]

)<

123:

str_list[i]

=chr((

ord(str_list[i])-

ord(

'a')

- k +26)

%26+ord

('a'))

elif

64<

ord(str_list[i]

)<91:

str_list[i]

=chr((

ord(str_list[i])-

ord(

'a')

- k +26)

%26+ord

('a'))

else

: str_list[i]

= str_list[i]

for i in

range

(len

(str_list)):

print

(str_list[i]

,end="")

print

(" "

)#主函式

control =

'y'while control ==

'y':

moudle =

input

("加密輸入s,解密輸入d:"

)if moudle ==

's':

secret(

)#加密

control =

input

("繼續操作輸入y,退出輸入n:"

)elif moudle ==

'd':

deciphering(

)#解密

control =

input

("繼續操作輸入y,退出輸入n:"

)else

:print

("輸出錯誤!"

) control =

input

("繼續操作輸入y,退出輸入n:"

)

古典密碼 python實現凱撒密碼

def secret str input 請輸入明文 k int input 請輸入移位 str list list str i 0 for i in range len str list if 96 ord str list i 123 str list i chr ord str list i ...

密碼學課設實驗 古典密碼c 實現

一 實驗目的 通過實現簡單的古典密碼演算法,理解密碼學的相關概念如明文 plaintext 密文 ciphertext 加密金鑰 encryption key 解密金鑰 decryption key 加密演算法 encryption algorithm 解密演算法 decryption algori...

python實現尼姆遊戲

尼姆遊戲,這是乙個著名的遊戲,有很多變種玩法。兩個玩家輪流從一堆物品中拿走一部分。在每一步中,玩家可以自由選擇拿走多少物品,但是必須拿走一部並且最多只能拿走一半物品,然後輪到下乙個玩家。拿走最後乙個物品的玩家輸掉遊戲。先手隨機。sur bin nve python coding utf 8 impo...