php凯撒密码解密,凯撒加密解密.py

# -*- coding: utf-8 -*-

class CaesarCipher(object):

"""

凯撒加密解密

"""

def __crypt(self, char, key):

"""

对单个字母加密,偏移

@param char: {str} 单个字符

@param key: {num} 偏移量

@return: {str} 加密后的字符

"""

if not char.isalpha():

return char

else:

base = "A" if char.isupper() else "a"

return chr((ord(char) - ord(base) + key) % 26 + ord(base))

def encrypt(self, char, key):

"""

对字符加密

"""

return self.__crypt(char, key)

def decrypt(self, char, key):

"""

对字符解密

"""

return self.__crypt(char, -key)

def __crypt_text(self, func, text, key):

"""

对文本加密

@param char: {str} 文本

@param key: {num} 偏移量

@return: {str} 加密后的文本

"""

lines = []

for line in text.split("\n"):

words = []

for word in line.split(" "):

chars = []

for char in word:

chars.append(func(char, key))

words.append("".join(chars))

lines.append(" ".join(words))

return "\n".join(lines)

def encrypt_text(self, text, key):

"""

对文本加密

"""

return self.__crypt_text(self.encrypt, text, key)

def decrypt_text(self, text, key):

"""

对文本解密

"""

return self.__crypt_text(self.decrypt, text, key)

if __name__ == '__main__':

plain = """

you know? I love you!

"""

key = 3

cipher = CaesarCipher()

x =cipher.encrypt_text(plain, key)

# 加密

print(x)

# brx nqrz? L oryh brx!

# 解密

print(cipher.decrypt_text(x, key))

# you know? I love you!

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值