密码学编程——凯撒加密

    xiaoxiao2022-06-24  222

    凯撒加密原理:

             凯撒加密法,这种加密法曾在两千年前被凯撒大帝用过,主要用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 8位,则 字母 A 将变为Q,字母 B 将变为R,…,字母 X 变成 N,字母 Y 则变为 O,字母 Z 变为 P。其中右移8位的,8就是加密密钥;

    如何用程序实现:

             把字母表的字母从A到Z写下来,在每个字母下面写下数字0到25。在A下面写0, B 下面写1,如此类推,直到在Z下面写25 (字母表里有26个字母,但我们的数字最多只到 25,因为我们从0而不是1开始的)。

            现在,如果要加密,我们找到希望加密的字母下面的数字,然后把密钥数字加上去。这 个和就是加密的字母下面的数字。如,我们使用密钥13加密“Hello. How are you?”。首先, 我们找到H下面的数字,是7。接着,我们把密钥加上这个数字,7+13=20。数字20在字 母U下面,这意味着字母H加密成字母U。如果要加密字母E,我们把E下面的4加上13, 得到17。17上面的字母是R,因此E加密成R。如此类推。 直到我们遇上字母O时这个方法才会岀问题。O下面的数字是14,当把14加上13时, 我们得到27。但我们的数字列表最多只到25。如果字母的数字和密钥之和超过26,我们应 该减去26, 27-26得到1。数字1上面的字母是B。于是,当使用密钥13时,字母O加密 成字母B。 个接 个地,我们可以把“HELLO. HOW ARE YOU?”里的字母加密成“URYYB. UBJ NER LBH?”。 

    代码:

    message = 'This is my secret message.' #the encrypted/decrypted key key = 8 #set to 'encrypt' or 'decrypted' mode = 'encrypt' #Encryption Strength 'H' or 'L' strengthen = 'L' if strengthen == 'L': LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' else: LETTERS = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~' translated = '' message = message.upper() for symbol in message: if symbol in LETTERS: num = LETTERS.find(symbol) if mode == 'encrypt': num = num + key elif mode == 'decrypt': num = num - key if num >= len(LETTERS): num = num - len(LETTERS) elif num < 0: num = num + len(LETTERS) translated = translated + LETTERS[num] else: translated = translated + symbol print(translated)

     


    最新回复(0)