08:vigenère密码_密码技术:Vigenére密码,Playfair密码,Hill密码

08:vigenère密码

1)Vigenére密码 (1) Vigenére Cipher)

This technique is an example of Polyalphabetic Substitution technique which uses 26 Caesar ciphers make up the mono-alphabetic substitution rules which follow a count shifting mechanism from 0 to 25. That is, for each plain-text character we have a corresponding substitution known as a key letter.

该技术是使用26个凯撒密码弥补随后的计数移动机构从0到25。也就是说,对于我们的相应取代已知为每个纯文本字符的单字母替换规则多码替代技术的一个例子关键信

To understand this technique we need to take a look on this Vigenére tableau.

要了解此技术,我们需要看一下Vigenére表格

Vigenére tableau

The logic for this technique is simple, say for a key letter 't' and plain-text letter 'h', the corresponding cipher-text letter is at the intersection of row titled 't' and column titled 'h' thus for this case we get a ciphertext that would be 'A' based on above table.

这种技术的逻辑很简单,例如对于一个关键字母“ t”和纯文本字母“ h” ,相应的密文字母位于标题为“ t”的行与标题为“ h”的列的交点处。情况下,根据上表,我们将得到一个密文“ A”

It is clear that for encrypting a plain-text message we must need a key whose length is equal to the size of the plain-text message usually a repeating key is used.

显然,为了加密纯文本消息,我们需要一个长度等于纯文本消息大小的密钥,通常使用重复密钥。

2)Playfair密码 (2) Playfair Cipher)

Playfair cipher (aka Playfair square) is a cryptography technique used for manual encryption, it was introduced by Charles Wheatstone in 1854 but it was popularized by Lord Playfair hence his name used.

Playfair密码(又名Playfair平方)是一种用于手动加密的加密技术,由Charles Wheatstone于1854年提出,但后来被Playfair勋爵推广,因此使用了他的名字。

The Playfair cipher was used in world war I by the British army and in World war II it was used by Australians. It was because the Playfair cipher is quite fast to use and does not demand any special equipment.

Playfair密码在第一次世界大战中被英国军队使用,在第二次世界大战中被澳大利亚人使用。 这是因为Playfair密码使用起来非常快,并且不需要任何特殊设备。

Playfair technique has 2 major steps:

Playfair技术有两个主要步骤:

Playfair Cipher

Step 1: Creation and Population of matrix

步骤1:矩阵的创建和填充

This technique uses a 5 x 5 matrix which stores a keyword (or phrase) that becomes the key for encryption or decryption. This involves some set of fixed rule, those are:

该技术使用5 x 5矩阵 ,该矩阵存储一个关键字(或短语),该关键字成为加密或解密的密钥。 这涉及到一些固定规则,它们是:

  1. Fill the keyword in the matrix row-wise from left to right, top to down.

    从左到右,从上到下按行在矩阵中填充关键字。

  2. Remove all repeated letters.

    删除所有重复的字母。

  3. Enter the remaining spaces in the matrix with the rest of the English alphabets (A-Z) that were not a part of our keyword. In this process, combine I and J in the same cell of the table; in other words, if I and J is a part of the keyword disregard both I and J while filling the remaining slots.

    在矩阵中输入剩余的空格以及不属于我们关键字的其余英文字母( AZ )。 在此过程中,将IJ合并到表的同一单元格中; 换句话说,如果IJ是关键字的一部分,则在填充其余插槽时,请同时忽略IJ。

Example:

例:

Let's take our keyword as 'INCLUDEHELP IS AWESOME'. Then 5 x 5 matrix will look as:

让我们将关键字设为“ INCLUDEHELP IS AWESOME” 。 然后5 x 5矩阵将如下所示:

Playfair Cipher Example Image 1

Step 2: Encryption

步骤2:加密

This process consist of the following process:

此过程包括以下过程:

  1. The plain-text we want to encrypt need to broke down into a pair of alphabets. For example, if our message is "MY NAME IS POGO", it will become "MY NA ME IS PO GO".

    我们要加密的纯文本需要分解为一对字母。 例如,如果我们的消息是“ MY NAME IS POGO” ,它将变成“ MY NA ME IS PO GO”

  2. If both alphabets are the same (or only left), add an X after the first alphabet in a pair. Encrypt the new pair (after adding X) then continue.

    如果两个字母相同(或仅向左),则在成对的第一个字母之后添加X。 加密新对(添加X之后 ),然后继续。

    1. If pair appears in the same row of the matrix, replace them with a letter at its right, if it's at the right end of the row then wrapping around the left side of the row.
  3. If pair appears in the same column of the matrix, replace them with the alphabet below them. If it's on the bottom then wrapping around the top of the row.

    如果对出现在矩阵的同一列中,请用其下面的字母替换它们。 如果它在底部,则环绕该行的顶部。

  4. If the pairis not in the same row or column, replace them with the alphabets in the same row respectively, but at the other pair of cornersof the rectangle defined by the original pair. The order is quite significant here. The first encrypt alphabet of the pair is the one that is present on the same row as the first plaintext alphabet.

    如果该对不在同一行或同一列中,则分别用同一行中的字母代替它们,而应替换为原始对定义的矩形的另一对角。 这里的顺序非常重要。 该对中的第一个加密字母是与第一个明文字母在同一行上的字母。

Explanation:

说明:

"MY NA ME IS PO GO"

“我不喜欢我”

So we start with MY now in the above matrix it was not in the same row or column then rule 5 will apply.

因此,我们从上面的矩阵中的MY开始,因为它不在同一行或同一列中,所以将应用规则5。

Playfair Cipher Example Image 2

Now we replace 'MY' with the diagonals that are 'KZ'.

现在我们将对角线KZ替换为MY

Let's move to 'NA' again they are not in the same row or column, rule 5 will apply.

让我们再次移至“ NA”(它们不在同一行或同一列中),将应用规则5。

Playfair Cipher Example Image 3

Now, 'NA' will be replaced with 'UE'.

现在, “ NA”将被替换为“ UE”

Similarly, "MY NA ME IS PO GO" will become "KZ UE FA LO DS BS".

类似地, “ MY NA ME IS PO GO”将变为“ KZ UE FA LO DS BS”

For the decryptionprocess, we will just follow the exact opposite steps.

对于解密过程,我们将遵循完全相反的步骤。

3)希尔密码 (3) Hill Cipher)

The Hill cipher is based on polygraphic substitution that is it works on multiple letters at the same time, introduced by Lester Hill in 1929. This method related to the matrix theory of mathematics, specifically how to compute the inverse of a matrix.

希尔密码是基于多重图形替换的,它同时处理多个字母,这是莱斯特·希尔(Lester Hill)在1929年提出的。这种方法与数学的矩阵理论有关,特别是如何计算矩阵的逆。

Let's see how it works:

让我们看看它是如何工作的:

  1. Every Letter of plain-text will be represented by a number, so that A=0, B=1,...,Z=25.

    每个纯文本字母将由一个数字表示,因此A = 0,B = 1,...,Z = 25

  2. We will make a matrix of the plain-text message using the above knowledge.

    我们将使用以上知识来构成纯文本消息的矩阵。

    For example,

    例如,

    'CAT', so C=2, A=0, T=19. Thus our matrix lookslike:

    'CAT' ,因此C = 2,A = 0,T = 19 。 因此我们的矩阵看起来像:

    Hill Cipher Example Image 1
  3. Now, we multiply our matrix with randomly chosen keys. The size of the key must be n x n where n is a number of rows of our plain-text matrix.

    现在,我们将矩阵与随机选择的键相乘。 键的大小必须为nxn ,其中n是纯文本矩阵的行数。

    For example:

    例如:

    Hill Cipher Example Image 2
  4. Now multiply the above matrices,

    现在将上述矩阵相乘,

    Hill Cipher Example Image 3
  5. Now we will calculate a mod 26 value of the above matrix, that is remainder after dividing 26.

    现在我们将计算上述矩阵的mod 26值,即除以26后的余数。

    Hill Cipher Example Image 4
  6. Translate back number to alphabets, 5=F, 8=I, 13=N. Therefore, our cipher-text is "FIN".

    将数字转换回字母,即5 = F8 = I13 = N。 因此,我们的密文为“ FIN”

  7. For Decryption, take the cipher-text matrix and multiply it with the inverse of our original key matrix:

    对于解密,请采用密文矩阵并将其与原始密钥矩阵的逆矩阵相乘:

    Hill Cipher Example Image 5

翻译自: https://www.includehelp.com/cryptography/cryptographic-techniques-vigenére-cipher-playfair-cipher-hill-cipher.aspx

08:vigenère密码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node oauth2验证_如何设置和使用护照OAuth Facebook身份验证(第2部分)| Node.js

node oauth2验证In my last article (How to set up and use passport OAuth Facebook Authentication (Section 1) | Node.js), we looked at another form of authentication called the OAuth authentication which involves sign in or signup using social media. 在我的上…

东哥读书小记 之 《一个广告人的自白》

掰着指头一算,端午假期确实完成不少事情,过的太尼玛充实鸟:去健身房2小时,且老夫的平板支撑终于能坚持超过1分钟,普大喜奔有木有;给合租的室友买蛋糕过了个生日;去 去哪儿 参加W3ctech的技术交流…

Redis的文件事件与时间事件处理

目录文件事件处理事件类型客户端和服务端的通信过程时间事件处理执行器执行周期性事件作用事件的调度与执行文件事件处理 Redis基于Reactor模式开发了文件事件处理器。文件事件处理器以单线程方式运行,通过IO多路复用程序监听多个套接字,实现了高性能网…

Linux SPI框架

水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7733476 Linux的SPI子系统采用主机驱动和外设驱动分离的思想,首先主机SPI控制器是一种平台设备,因此它以platform的方式注册进内…

重构——解决过长参数列表(long parameter list)

目录1、Replace Param with Query2、Preserve Whole Object3、Introduce Param Object4、Remove Flag Argument5、Combine Functions into ClassReference当我们需要在超长函数中提炼子函数时,如果函数内有大量的参数和临时变量,这将会对函数的提炼形成很…

从uptime、stress、mpstat、pidstat观察CPU密集型、IO密集型、进程密集型切换的系统性能

uptime dyydyy-Lenovo-ThinkBook-14-IIL:~$ uptime10:27:10 up 7 min, 1 user, load average: 1.32, 0.99, 0.49结果分别对应:当前时间、系统运行时间、当前用户数目、过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average) 平均负载是指单位时间内&#xff0c…

多台计算机共享内存_共享内存多处理器和指令执行| 计算机架构

多台计算机共享内存共享内存多处理器 (Shared Memory Multiprocessor) There are three types of shared memory multiprocessor: 共有三种类型的共享内存多处理器: UMA (Uniform Memory Access) UMA(统一内存访问) NUMA (Non- uniform Memory Access) NUMA(非统一…

方法重写,隐藏在子类父类中的各种调用实践

一.子类和父类方法之间的关系 1.当子类和父类有方法完全相同的方法 namespace ConsoleApplication2 {class Program{static void Main(string[] args){B b new B();A a new A();A c new B();b.Show();a.Show();c.Show();Console.Read();}}public class A{public void Show()…

(解决)从同事那里取来的工程不能编译运行,出现以下错误,求帮助

错误 6 未能从程序集 C:\Program Files (x86)\MSBuild\Microsoft\Silverlight for Phone\v4.0\Microsoft.Phone.Build.Tasks.dll 加载任务“Microsoft.Phone.Build.Tasks.ValidateWMAppManifest”。 Could not load file or assembly Microsoft.Build.Utilities, Version2.0.0…

vmstat、sysbench、/proc/interrupts,性能压测

如何查看系统的上下文切换情况 vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数。 # 每隔 5 秒输出 1 组数据 vmstat 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r …

Linux系统上的程序调优思路概要

目录文件系统Linux内核应用程序架构设计性能监控性能测试CPU内存网络磁盘IO文件系统 Linux内核 应用程序 架构设计 性能监控 性能测试 CPU 内存 网络 磁盘IO

观察者模式Java实现

观察者模式就是当⼀个⾏为发⽣时传递信息给另外⼀个⽤户接收做出相应的处理,两者之间没有直接的耦合关联。 观察者模式分为三大块: 事件监听、事件处理、具体业务流程 例子解析 模拟摇号: 代码结构: 开发中会把主线流程开发完…

JavaScript | 声明数组并在每个循环中使用的代码

Declare an array and we have to print its elements/items using for each loop in JavaScript. 声明一个数组&#xff0c;我们必须使用JavaScript中的每个循环来打印其元素/项目。 Code: 码&#xff1a; <html><head><script>var fruits ["apple&…

拾牙的2021年秋招总结(大概会有帮助?)

目录秋招面试经历秋招面经参考基础部分面经常见问题对秋招一些经验最后收获后续安排秋招面试经历 时间公司岗位面试轮次是否完成2021年7月2日 07:00禾赛嵌入式软件工程师提前批一面pass2021年7月7日 16:00图森未来软件研发工程师-Linux应用提前批一面not pass2021年7月9日华为…

CPU使用率的查看以及性能分析(perf top/record/report)

目录CPU使用率查看CPU使用率&#xff08;top、pidstat解释&#xff09;CPU使用率过高perf topperf record 和 perf reportCPU使用率 Linux通过/proc虚拟文件系统&#xff0c;向用户空间提供了系统内部状态的信息。 /proc/stat提供的就是系统的CPU和任务统计信息。 执行命令cat…

如何从JavaScript数组中获取多个随机唯一元素?

The JavaScript is a very versatile language and it has a function almost everything that you want. JavaScript是一种非常通用的语言&#xff0c;它几乎具有您想要的所有功能。 Here, we will show you how to generate random unique elements from an array in JavaSc…

什么是ACID理论(二阶段、三阶段提交、TCC)

目录二阶段提交协议TCC&#xff08;Try-Confirm-Cancel&#xff09;预留成功预留失败三阶段提交协议总结Some questionsreferenceACID理论时对事务特性的抽象和总结&#xff0c;想要实现ACID需要掌握二阶段提交协议以及TCC 这里是有关协议的论文PDF链接&#xff1a; CONCURRENC…

oracle安装后新建数据库实例及配置

ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法 (2011-01-20 13:50:37) 转载▼标签&#xff1a; it 分类&#xff1a; 技术早上同事用PL/SQL连接虚拟机中的Oracle数据库&#xff0c;发现又报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务…

html5游戏开发--动静结合(二)-用地图块拼成大地图 初探lufylegend

一、前言 本次教程将向大家讲解如何用html5将小地图块拼成大地图&#xff0c;以及如何用现有的高级html5游戏开发库件lufylegend.js开发游戏。 首先让我们来了解了解如何用html5实现动画&#xff0c;毕竟“动静结合”是先有动再有静。看了上一章的内容&#xff0c;或许你就有了…