《Python密码学编程》——1.9 不用纸质工具做加密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

本节书摘来自异步社区《Python密码学编程》一书中的第1章,第1.9节,作者 [美] Al Sweigart(斯维加特),李永伦 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.9 不用纸质工具做加密

在使用凯撒加密法做加密和解密时,加密轮盘和St. Cyr滑条都是很好的工具。但我们只用铅笔和纸也可以实现凯撒加密法。

把字母表的字母从A到Z写下来,在每个字母下面写下数字0到25。在A下面写0,B下面写1,如此类推,直到在Z下面写25(字母表里有26个字母,但我们的数字最多只到25,因为我们从0而不是1开始的)。最终看起来像这样:


16eac59dbd65cc1e8ee82827f6fb952a1267b515

有了上面这个从字母到数字的代码,我们就可以用数字来表示字母了。这是一个非常强大的概念,因为数学使用数字。现在我们可以在字母上做运算了。

现在,如果要加密,我们找到希望加密的字母下面的数字,然后把密钥数字加上去。这个和就是加密的字母下面的数字。如,我们使用密钥13加密“Hello. How are you?”。首先,我们找到H下面的数字,是7。接着,我们把密钥加上这个数字,7 + 13 = 20。数字20在字母U下面,这意味着字母H加密成字母U。如果要加密字母E,我们把E下面的4加上13,得到17。17上面的字母是R,因此E加密成R。如此类推。

直到我们遇上字母O时这个方法才会出问题。O下面的数字是14,当把14加上13时,我们得到27。但我们的数字列表最多只到25。如果字母的数字和密钥之和超过26,我们应该减去26,27 – 26得到1。数字1上面的字母是B。于是,当使用密钥13时,字母O加密成字母B。一个接一个地,我们可以把“HELLO. HOW ARE YOU?”里的字母加密成“URYYB. UBJ NER LBH?”。

因此,加密一个字母的步骤是:

1.从1到25选一个密钥。保管好这个密钥!

2.找出明文字母的数字。

3.把密钥加到这个明文字母的数字。

4.如果这个数字大于26,则减去26。

5.找出你计算的数字的字母。这就是密文字母。

6.对明文消息里的每个字母重复步骤2~5。

表1-1演示了如何使用密钥13加密“HELLO. HOW ARE YOU?”里的每个字母。每列演示了把左边的明文字母变成右边的密文字母的步骤。


68ab7576e0c78816b2789c3785fb6eab20ec5be9


0287ad8954512edb0c36da38eaccbe3948864fe0

如果要解密,你需要理解负数是什么。如果你不知道如何加和减负数,可以参考教程http://invpy.com/neg

如果要解密,减去这个密钥,而不是加上它。对于密文字母B,这个数字是1。1减去13得到−12。就像加密的“减去26”规则,当解密并且结果小于0时,我们有一条“加上26”的规则。−12 + 26是14,因此,如表1-2所示,密文字母B解密回字母O。


2f629648988d201c2cc3f7af7a221249ae357849


01332e535fd8f976398432b438192ef04b4cd4b8

如你所见,使用凯撒加密法加密是并不真的需要加密轮盘。如果你记住数字和字母,你甚至不必写下字母表以及它们下面的数字。你只需心算就可以写出秘密消息了。

相关文章
|
21天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
20天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
8天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
101 80
|
27天前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
134 59
|
7天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
34 2
|
20天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
44 10
|
24天前
|
机器学习/深度学习 人工智能 Java
Python 语言:强大、灵活与高效的编程之选
本文全面介绍了 Python 编程语言,涵盖其历史、特点、应用领域及核心概念。从 1989 年由 Guido van Rossum 创立至今,Python 凭借简洁的语法和强大的功能,成为数据科学、AI、Web 开发等领域的首选语言。文章还详细探讨了 Python 的语法基础、数据结构、面向对象编程等内容,旨在帮助读者深入了解并有效利用 Python 进行编程。
|
22天前
|
机器学习/深度学习 人工智能 数据挖掘
探索Python编程的奥秘
在数字世界的海洋中,Python如同一艘灵活的帆船,引领着无数探险者穿梭于数据的波涛之中。本文将带你领略Python编程的魅力,从基础语法到实际应用,一步步揭开Python的神秘面纱。
40 12
|
19天前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
80 7
|
21天前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!

热门文章

最新文章