凯撒密码(Python)

一、凯撒密码是什么?

凯撒密码是一种非常古老的加密方法,最初由古罗马的凯撒大帝使用。凯撒大帝将纸条卷起后,按照字母表顺序向后移动一定的位数,然后再写下加密后的字母,这样其他人就无法直接读取他的信息。

凯撒密码(移位密码):是一种替换加密,明文中的所有字母都在字母表上向后或向前按照一个固定数目进行偏移后被替换成密文。

例如,偏移量为3位的时候:A对应D,B对应E,C对应F等

当偏移量为13位的时候,凯撒密码又叫回转密码ROT13):明文加密得到密文,密文再加密就会得到明文(因为偏移量为13位,一共26个字母,加密两次就会回到明文了),题目关键字眼会有回转、回旋、十三踢等字眼。

题目:十三踢!
密文:Nusynt
明文:AHflag

而在今天,作为一种经典的加密算法,凯撒密码仍然被广泛应用于密码学领域,本文将使用Python编写一个凯撒密码的加密器和解密器。

二、凯撒密码的加密和解密原理:

加密:将每个字母都向后移动k位,其中k为加密密钥。

解密:反向操作,将每个字母都向前移动k位。

三、使用Python实现凯撒密码的加密

def encryption(str,k):
    result = ""
    for i in range(len(str)):
        if str[i].isupper():
            result += chr((ord(str[i]) + k-65) % 26 + 65)
        else:
            result += chr((ord(str[i]) + k - 97) % 26 + 97)
    return result

代码解释:

1.定义加密函数encryption(str,k),其中str为需要加密的字符串,k为加密密钥。使用for循环计算每个字母加密后的ASCII码。

2.使用ord函数获取每个字母的ASCII码,isupper函数判断字母是否为大写字母,如果是,则减去65('A')后进行移位加密;如果是小写字母,则减去97('a')后进行移位加密,最后使用chr将ASCII码转换为字母。

3.将加密后的每个字母拼接到result字符串中,并返回result。

四、使用Python实现凯撒密码的解密

def decryption(str,k):
    result = ""
    for i in range(len(str)):
        if str[i].isupper():
            result += chr((ord(str[i]) - k - 65) % 26 + 65)
        else:
            result += chr((ord(str[i]) - k - 97) % 26 + 97)
    return result

代码解释:

1.定义解密函数decryption(str,k),其中str为需要解密的字符串,k为解密密钥。使用for循环计算每个字母解密后的ASCII码。

2.使用ord函数获取每个字母的ASCII码,isupper函数判断字母是否为大写字母,如果是,则减去65后进行移位解密;如果是小写字母,则减去97后进行移位解密,最后使用chr将ASCII码转换为字母。

3.将解密后的每个字母拼接到result字符串中,并返回result。

五、代码示例

def encryption(str,k):
    result = ""
    for i in range(len(str)):
        if str[i].isupper():
            result += chr((ord(str[i]) + k-65) % 26 + 65)
        else:
            result += chr((ord(str[i]) + k - 97) % 26 + 97)
    return result

def decryption(str,k):
    result = ""
    for i in range(len(str)):
        if str[i].isupper():
            result += chr((ord(str[i]) - k - 65) % 26 + 65)
        else:
            result += chr((ord(str[i]) - k - 97) % 26 + 97)
    return result

if __name__ == '__main__':
    while True:
        choice = input("请选择加密或解密:\na.加密\nb.解密\nc.退出\n")
        if choice == 'a':
            str = input("请输入需要加密的字符串:")
            k = int(input("请输入加密密钥:"))
            print("加密后的字符串为:", encryption(str,k))
        elif choice == 'b':
            str = input("请输入需要解密的字符串:")
            k = int(input("请输入解密密钥:"))
            print("解密后的字符串为:", decryption(str,k))
        elif choice == 'c':
            break

  • 29
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
凯撒密码是一种简单且广为人知的加密技术,它是一种替换加密的技术,将明文中的所有字母按照字母表的顺序向后偏移固定数目后变成密文。在Python中解决凯撒密码可以使用以下步骤: 1. 首先,定义一个函数来实现凯撒密码的加密和解密操作。该函数需要接收两个参数:明文和偏移量。偏移量可以是正数(向后偏移)或负数(向前偏移)。 2. 在函数内部,使用一个循环来遍历明文中的每个字符。对于每个字符,根据其在字母表中的位置进行偏移。可以使用内置的ord()函数将字符转换为ASCII码,并使用chr()函数将偏移后的ASCII码转换回字符。 3. 注意处理大写字母和小写字母的情况。可以使用内置的isupper()函数和islower()函数来判断字符是否为大写或小写,并根据情况进行相应的处理。 4. 最后,返回加密或解密后的结果。 以下是一个示例的凯撒密码加密和解密函数的实现: ```python def caesar_cipher(text, shift): result = "" for char in text: if char.isalpha(): if char.isupper(): result += chr((ord(char) - 65 + shift) % 26 + 65) else: result += chr((ord(char) - 97 + shift) % 26 + 97) else: result += char return result ``` 使用该函数,你可以将明文加密为凯撒密码,也可以将凯撒密码解密回明文。例如,使用偏移量3对明文"hello"进行加密: ```python plaintext = "hello" shift = 3 ciphertext = caesar_cipher(plaintext, shift) print(ciphertext) # 输出:"khoor" ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值