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

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

凯撒密码

原理:

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


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


例如:

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

image.png


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

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

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

二者合称为密码算法。


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


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

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


Python来实现凯撒密码

image.png


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!


相关文章
|
4月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
333 102
|
4月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
356 104
|
4月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
285 103
|
3月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
273 3
|
3月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
514 3
|
3月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
334 3
|
3月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
362 0
|
11月前
|
云安全 安全 数据建模
《数字证书:互联网世界的"身份证"与"防盗门"》 ——揭秘网络安全背后的加密江湖
在2023年某深夜,上海陆家嘴金融公司机房遭遇黑客攻击,神秘青铜大门与九大掌门封印的玉牌突现,阻止了入侵。此门象征数字证书,保障网络安全。数字证书如验钞机识别假币,保护用户数据。它通过SSL/TLS加密、CA认证和非对称加密,构建安全通信。证书分为DV、OV、EV三类,分别适合不同场景。忽视证书安全可能导致巨额损失。阿里云提供一站式证书服务,助力企业部署SSL证书,迎接未来量子计算和物联网挑战。
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
242 10

推荐镜像

更多