凯撒加密算法原理与python实现

小tips   凯撒加密算法是一种古老的加密方法,它通过将字母表中的每个字母移动固定数量的位置来进行加密。例如,如果将字母移动3个位置,那么’A’会被加密为’D’,‘B’会被加密为’E’,以此类推。

以下是凯撒加密算法的基本原理和实现步骤:

原理:

   1, 确定一个整数作为密钥,这个整数代表字母表中需要移动的位数。
   2, 对于明文中的每个字母:
                (如果是字母表中的字母,将其向后移动密钥指定的位数。
                (如果移动后超出了字母表的末尾,则回绕到字母表的开始。
   3, 保持所有非字母字符不变。

加密过程:

假设密钥是3,那么加密过程如下:

明文字母: A B C D E … X Y Z 密文字母: D E F G H … A B 

解密过程:

解密是加密的逆过程,如果密钥是3,那么解密过程如下:

密文字母: D E F G H … A B C 明文字母: A B C D E … X Y Z

Python实现:

def caesar_encrypt(text, key):   加密函数
    result = ""
    
    for char in text:     遍历字符串 text 中的每一个字符
        if char.isalpha():     检查是否是字母
            shift = key % 26     取模运算计算字母需要移动的位置数
            if char.islower():   小写字母
                 对小写字母进行加密
                result += chr((ord(char) - ord('a') + shift) % 26 + ord('a'))    ord(char):获取字符 char 的 ASCII 码值,chr() 函数将 ASCII 码值转换回对应的字符。
            else:    大写字母
                 对大写字母进行加密
                result += chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
        else:
               非字母字符保持不变
            result += char
    
    return result

def caesar_decrypt(ciphertext, key):    解密函数,传递密匙的相反数
    return caesar_encrypt(ciphertext, -key)

示例
plaintext = "Hello, World!"
key = 3

encrypted_text = caesar_encrypt(plaintext, key)
print(f"Encrypted: {encrypted_text}")

decrypted_text = caesar_decrypt(encrypted_text, key)
print(f"Decrypted: {decrypted_text}")

段代码定义了两个函数:caesar_encrypt 用于加密,caesar_decrypt 用于解密。加密和解密都依赖于密钥,解密时只需将密钥取反即可。

需要注意的是,凯撒加密算法的安全性非常低,因为它对于所有字母使用相同的移位,并且没有考虑字符的频率分析。因此,它通常只用于教学目的或简单的密码游戏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值