使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)

在学习操作系统的时候,我们会学到系统安全的章节,而在这一块会有关于加密解密算法的学习。

一共有5种常见的加密解密算法:凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法。 

我使用了js实现了这5种算法,而且做了可视化处理、输入输出格式化处理,使得操作起来非常方便,下面是实现后整体的效果:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第1张图片

1.这里是源代码下载地址(Github): 

基于js的5种加密解密算法实现

 

2.五种加密解密算法的基本原理

①单字母替换加密方法——恺撒密码

       加密方法是把英文字母按字母表的顺序编号作为明文,将密钥定为m,加密算法为将明文加上密钥m,得到密码表,通过相反的过程由密文得到明文。

②单字母替换加密方法——字母倒排序

       在加密、解密的过程中明文和密文按照字母表的顺序倒排对应,即A对应Z,B对应Y。  

单字母替换加密方法——单表置换密码      

       由密钥Key构造字符置换表,完成加密和解密过程。

④多字母替换加密方法——维吉利亚密码

       假设明文m=m1 m2 m3 … mn;密钥k=k1k2 k3 … kn,对应密文c=c1 c2 c3 … cn,密文为:ci=(mi+ki )mod 26 ,26个字母的序号依次为0~25,ci , mi ,,ki是分别是密文明文密钥中第i个字母的序号。

转换加密方法

       通过将明文每m个字符一组按顺序分为若干个字符串,再按照先列后行形成密文,并分析给出解密的方法。或者通过给出一个密钥字符串,将明文按密钥字符串长度按顺序分为若干组字符串,再按照密钥字符串各个字符的顺序形成密文,并分析给出解密的方法。

 

3.基础功能设计

①清空功能:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第2张图片

  ②加密解密单选设计:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第3张图片

   ③菜单设置:

   ④消息提醒设置:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第4张图片

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第5张图片

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第6张图片

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第7张图片

 

4.测试过程 

(一)凯撒密码

①加密实验

输入数据:

InputABCDEFGH

Num4

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第8张图片

输出数据:

OutputEFGHIJKL

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第9张图片

 

②解密实验

输入数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第10张图片
InputEFGHIJKL

Num4

输出数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第11张图片
OutputABCDEFGH

 

(二)字母倒排序

①加密实验

输入数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第12张图片
Inputimportant

输出数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第13张图片
Outputrnkligzmg

 

②解密实验

输入数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第14张图片
Inputrnkligzmg

输出数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第15张图片
Outputimportant

 

(三)单表置换

①加密实验

输入数据:

Inputimportant

keyBEIJINGTSINGHUA(北京清华)

输出数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第16张图片
Output:HDLKOQBFQ

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第17张图片

 

②解密实验

输入数据:

InputHDLKOQBFQ

keyBEIJINGTSINGHUA(北京清华)

输出数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第18张图片
Output:important

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第19张图片

 

(四)维基利亚

①加密实验

输入数据:

Inputinformation

keySTAR

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第20张图片
输出数据:

OutputAGFFJFAKAHN

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第21张图片

 

②解密实验

输入数据:

InputAGFFJFAKAHN

keySTAR

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第22张图片

输出数据:

Outputinformation

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第23张图片

 

(五)转换加密(1

①加密实验

输入数据:

Inputit can allow students to get close up views

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第24张图片
Num5

输出数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第25张图片
Outputiasngovtlttesiclusteeaodtcuwnweolps

 

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第26张图片


②解密实验

输入数据:

Inputiasngovtlttesiclusteeaodtcuwnweolps

Num5

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第27张图片
输出数据:

Outputitcanallowstudentstogetcloseupviews

 

(六)转换加密(2

①加密实验

输入数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第28张图片
Inputwu han university of technology

KeyMISXTONG

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第29张图片
输出数据:

OutputIOL*UETGWVFONYO*UTN*HREYNIH*ASC*

 

②解密实验

输入数据:

InputIOL*UETGWVFONYO*UTN*HREYNIH*ASC*

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第30张图片
输出数据:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第31张图片
Outputwuhanuniversityoftechnology

 

5.注意事项

   (一).本项目为了增加可操作性、增加视图画面感、进行输入输出验证,使用了Vue.js中数据绑定的功能以及Element UI插件

   (二).主体代码都在code_index.html中,代码总量600余行。进行了详细地标注

   (三).在转化加密的实现过程中会有一个不可避免的BUG,那就是当以相应的栅栏间隔对字符串进行分割形成相应二维数组的时候,由于其先行后列进行排序,再先列后行进行排序,所以如果二维数组尾部出现空字符,则在这个变化的过程中会无故丢失数据的结构,导致排序的错乱。

       我想到了两种解决方法:

      ①通过限时用户的输入格式,使得最终形成的二维数组不会有空字符存在,这样也就避免了相应的数据丢失,如下图所示:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第32张图片

 

      ②通过在先行后列和先列后行的排序中对于空字符进行识别,替换成一个特殊字符,以弥补数据结构的缺失,本实验中采用的是“*”这一特殊字符,如下图所示:

使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法)_第33张图片

  (四)最后再次附上源码下载地址:基于js的5种加密解密算法实现 

你可能感兴趣的:(算法之路__极客王道)