2023年5月10日 星期三

關於國中資訊科技-加密的補充教材-python 凱薩密碼實作

        目前連結著課本6-2-2 第二節 加密。該章節介紹兩種加密方法,分別是凱薩密碼與維吉尼亞密碼。 那希望學生能體會凱薩密碼實作的效果。因此,在此引進網路所蒐尋到的實作資料。
        首先是引進資料來源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='')


        資料來源1程式碼可以引導學生認識凱薩密碼的金鑰為何?

        改善程式:上述程式,並沒有金鑰(位移量)概念。因此,更改為
# 加密
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.
.

沒有留言:

張貼留言

30分鐘 docker 入門筆記

        課程內容: 一.基本概念 二.安裝配置 三.常用命令 四.構建鏡像 五.運行容器 六.Docker Compose & Kubernetes Docker 簡介:         Docker 是一個用於構建(build)、運行(run)、傳送(share...