維吉尼亞密碼的加密解密

2021-09-20 02:13:00 字數 2232 閱讀 4884

# -*- coding:utf-8 -*-

def weijiniya_jiemi(ciphertext,key):

ascii='abcdefghijklmnopqrstuvwxyz'

keylen=len(key)

ctlen=len(ciphertext)

plaintext = ''

i = 0

while i < ctlen:

j = i % keylen

k = ascii.index(key[j])

m = ascii.index(ciphertext[i])

if m < k:

m += 26

plaintext += ascii[m-k]

i += 1

print plaintext

def weijiniya_jiami(plaintext,key):

ascii='abcdefghijklmnopqrstuvwxyz'

keylen=len(key)

ptlen=len(plaintext)

ciphertext = ''

i = 0

while i < ptlen:

j = i % keylen

k = ascii.index(key[j])

m = ascii.index(plaintext[i])

ciphertext += ascii[(m+k)%26]

i += 1

print ciphertext

def main():

print 'choice:'

print '1:weijiniya_jiami'

print '2:weijiniya_jiemi'

choice = input()

if choice == 1:

plaintext = input('jiama_string1:')

key = input('key:')

weijiniya_jiami(plaintext,key)

elif choice == 2:

ciphertext = input('jiemi_string1:')

key = input('key:')

weijiniya_jiemi(ciphertext,key)

else:

print('error!')

main()

if __name__ == '__main__':

main()

好像cmd視窗有點問題,中文一直顯示不出來,就直接用拼音了哈哈哈。。。

# -*- coding:utf-8 -*-

defchange(c,i):

c = c.lower()

num =ord(c)

ifnum >=97andnum <=122:

num =97+ ((num -97) + i) %26

returnchr(num)

defkaisa_jiami(string,i):

string_new =''

forsinstring:

string_new += change(s,i)

print(string_new)

returnstring_new

defkaisa_jiemi(string):

foriinrange(25):

print('\n', i,'\n')

i +=1

kaisa_jiami(string,i)

defmain():

print('請選擇需要的操作:')

print('1:凱撒加密')

print('2:凱撒解密')

choice =input()

ifchoice ==1:

string =input('請輸入需要加密的字串:')

num =int(input('請輸入需要偏移的位數:'))

kaisa_jiami(string,num)

elifchoice ==2:

string =input('請輸入需要解密的字串:')

kaisa_jiemi(string)

else:

print('輸入錯誤,請重試!')

main()

if__name__ =='__main__':

main()

維吉尼亞密碼

維吉尼亞密碼是在凱撒密碼基礎上產生的一種加密方法,它將凱撒密碼的全部25種位移排序為一張表,與原字母序列共同組成26行及26列的字母表。另外,維吉尼亞密碼必須有乙個金鑰,這個金鑰由字母組成,最少乙個,最多可與明文本母數量相等。維吉尼亞密碼加密方法示例如下 明文 i ve got it.金鑰 ok 密...

Vigen re Cipher 維吉尼亞加解密演算法

維吉尼亞的加解密有兩種方法。第一種是查表 第一行為明文,第一列為金鑰,剩餘的為對應的密文 第二種方法是轉化計算法 逐個將字元轉化為從零開始的數字,對數字進行加密 解密後,再轉化為字元。核心 如下 cipher.h 額外新增的檔案,用來放置相關演算法,此檔案獨立於mfc外,可直接移植到支援cstrin...

用python編寫維吉尼亞密碼加解密

簡單介紹 維吉尼亞密碼演算法使用乙個金鑰和乙個表來實現加密,根據明文和金鑰的對應關係進行查表來決定加密結果。假設替換表如圖所示,最上面一行表示明文,最左邊一列表示金鑰,那麼二維 中與明文本母和金鑰字母對應的字母就是加密結果。例如單詞python使用abcdef做金鑰的加密結果就是pzvkss 可在此...