# 注释即文档系列 最简单对称加密之凯撒加密

class KaiSa:
    def __init__(self):
        self.LETTERS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
        self.key = 10

    def set_key(self, key):
        """在这里,key等于偏移量"""
        self.key = key

    def encrypt(self, message):
        """加密"""
        translated = ''
        for symbol in message:  # 遍历字符串
            if symbol in self.LETTERS:  # 判断字符是否可以加密
                index = self.LETTERS.find(symbol)  # 获取下标 即对应位置
                index = index + self.key    # 向右偏移 获取对应加密 字符
                # 已知对应 位置是 0到len-1       所以大于等于len的时候减len
                while index >= len(self.LETTERS):
                    index = index - len(self.LETTERS)
                # 得出 加/解密 后的 字符
                translated = translated + self.LETTERS[index]
            else:
                # 不能加密的就不变
                translated = translated + symbol
        return translated

    def decrypt(self, message):
        """解密"""
        translated = ''
        for symbol in message:  # 遍历字符串
            if symbol in self.LETTERS:  # 判断字符是否可以解密
                index = self.LETTERS.find(symbol)  # 获取下标 即对应位置
                index = index - self.key
                # 已知对应 位置是 0到len-1       所以大于等于len的时候减len
                while index < 0:
                    index = index + len(self.LETTERS)
                # 得出 加/解密 后的 字符
                translated = translated + self.LETTERS[index]
            else:
                # 不能加密的就不变
                translated = translated + symbol
        return translated


kaisa = KaiSa()
kaisa.set_key(13)
contant = 'This is my secret message.'  # 内容
jiami_contant = kaisa.encrypt(contant)  # 加密
jiemi_contant = kaisa.decrypt(jiami_contant)  # 解密

print('初始内容', contant)
print('加密内容', jiami_contant)
print('解密内容', jiemi_contant)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值