系列文章:
目前連結著課本6-2-2 第二節 加密。該章節介紹兩種加密方法,分別是凱薩密碼與維吉尼亞密碼。 那希望學生能體會凱薩密碼實作的效果。因此,在此引進網路所蒐尋到的實作資料。
首先是引進資料來源1,該程式碼如下:
首先是引進資料來源1,該程式碼如下:
#凱撒密碼加密
P = input()
ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
CBA = "DEFGHIJKLMNOPQRSTUVWXYZABCdefghijklmnopqrstuvwxyzabc"
u = len(P)
for i in range(u):
s = P[i]
if s in ABC:
n=ABC.index(s)
print(CBA[n],end='')
else:
print(s,end='')
#凱撒密碼解密
P = input()
ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
CBA = "DEFGHIJKLMNOPQRSTUVWXYZABCdefghijklmnopqrstuvwxyzabc"
u = len(P)
for i in range(u):
s = P[i]
if s in CBA:
n=CBA.index(s)
print(ABC[n],end='')
else:
print(s,end='')
改善程式:上述程式,並沒有金鑰(位移量)概念。因此,更改為
# 加密
str = input("請輸入明文:")
key = int(input("請輸入金鑰:"))
for i in range(len(str)):
if ord(str[i]) >= ord('a') and ord(str[i]) <= ord('z'):
print(chr((ord(str[i])+key-ord('a'))%26+ord('a')),end='')
elif ord(str[i]) >= ord('A') and ord(str[i]) <= ord('Z'):
print(chr((ord(str[i])+key-ord('A'))%26+ord('A')),end='')
else:
print(str[i],end='')
# 解密
str = input("請輸入明文:")
key = int(input("請輸入金鑰:"))
for i in range(len(str)):
if ord(str[i]) >= ord('a') and ord(str[i]) <= ord('z'):
print(chr((ord(str[i])-key-ord('a'))%26+ord('a')),end='')
elif ord(str[i]) >= ord('A') and ord(str[i]) <= ord('Z'):
print(chr((ord(str[i])-key-ord('A'))%26+ord('A')),end='')
else:
print(str[i],end='')
資料來源:
4.
.
沒有留言:
張貼留言