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

沒有留言:

張貼留言

軟體定義網路SDN-主題2-1 OpenFlow 概述

學習目標: 一.介紹OpenFlow特性 二.介紹OpenFlow Ports:實體port、邏輯port、保留port 一.介紹OpenFlow特性 1.OpenFlow 是 (1).控制器與交換器之間溝通的通訊協定 (2)使用了TCP (port 6653;舊版 port 6...