900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python编程:实现凯撒密码加密解密

Python编程:实现凯撒密码加密解密

时间:2023-04-04 09:09:33

相关推荐

Python编程:实现凯撒密码加密解密

凯撒密码

原理:

通过把字母移动一定的位数来实现加解密

明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文。

例如:

当步长为3时,A被替换成D,B被替换成E,依此类推,X替换成A。

在密码学中,用于解决复杂问题的步骤,称为一种算法

加密算法: 从明文到密文的过程

解密算法: 从密文到明文的过程

二者合称为密码算法。

密码算法+密钥构成了数据加密和解密

对称加密: 在加密和解密的过程中使用相同密钥的算法,例如:凯撒密码

非对称密码(公钥加密算法):加密和解密使用不同密钥的算法,例如:RSA

Python来实现凯撒密码

ord() :将字符转换为了对应的 ASCII 值

chr(): 将对应的值转换为字符

取模运算: 将一个数整除另一个数得到的余数,余数即模运算的值

# -*- coding: utf-8 -*-# @Date : -10-12# @Author : Peng Shiyuclass CaesarCipher(object):"""凯撒加密解密"""def __crypt(self, char, key):"""对单个字母加密,偏移@param char: {str} 单个字符@param key: {num} 偏移量@return: {str} 加密后的字符"""if not char.isalpha():return charelse: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 = 3cipher = CaesarCipher()# 加密print(cipher.encrypt_text(plain, key))# brx nqrz? L oryh brx!# 解密print(cipher.decrypt_text("brx nqrz? L oryh brx!", key))# you know? I love you!

详细参考:

Hacking- Python之禅

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。