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

您所在的位置:网站首页 python简单加密 Python编程:实现凯撒密码加密解密

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

2023-01-04 04:21| 来源: 网络整理| 查看: 265

凯撒密码

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

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

例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替换成A。Python编程:实现凯撒密码加密解密_Python

在密码学中,用于解决复杂问题的步骤,称为一种算法 加密算法: 从明文到密文的过程 解密算法: 从密文到明文的过程 二者合称为密码算法。

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

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

Python来实现凯撒密码

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

ord() :将字符转换为了对应的 ASCII 值 chr(): 将对应的值转换为字符 取模运算: 将一个数整除另一个数得到的余数,余数即模运算的值

# -*- coding: utf-8 -*- # @Date : 2018-10-12 # @Author : Peng Shiyu 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() # 加密 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之禅



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3