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.
.

沒有留言:

張貼留言

資訊科技課堂中指導學生使用教育版Gemini ,如何讓學生不敢對教育版Gemini亂問問題

        自從Google 教育版可以讓教師、學生免費使用 Gemini。課堂中,老師可以在平板教學、資訊科技教學等課堂中,指導學生使用 Gemini。但是調皮的學生總是隨著自由想像,提出一些很奇怪的問題。但是老師可以怎麼做?讓學生不敢亂問問題?         一、如何使...