# -*- coding:utf-8 -*-好像cmd視窗有點問題,中文一直顯示不出來,就直接用拼音了哈哈哈。。。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()
# -*- 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 可在此...