Python编程:实现凯撒密码加密解密
【摘要】 凯撒密码
原理: 通过把字母移动一定的位数来实现加解密
明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文。
例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替换成A。
在密码学中,用于解决复杂问题的步骤,称为一种算法 加密算法: 从明文到密文的过程 解密算法: 从密文到明文的过程 二者合称为密码算法。
密码算法+密钥...
凯撒密码
原理:
通过把字母移动一定的位数来实现加解密
明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文。
例如:
当步长为3时,A被替换成D,B被替换成E,依此类推,X替换成A。
在密码学中,用于解决复杂问题的步骤,称为一种算法
加密算法: 从明文到密文的过程
解密算法: 从密文到明文的过程
二者合称为密码算法。
密码算法+密钥构成了数据加密和解密
对称加密: 在加密和解密的过程中使用相同密钥的算法,例如:凯撒密码
非对称密码(公钥加密算法):加密和解密使用不同密钥的算法,例如:RSA
Python来实现凯撒密码
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!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
详细参考:
Hacking- Python之禅
文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。
原文链接:pengshiyu.blog.csdn.net/article/details/83029736
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)