爪哇 中的Caesar密码
在本文中,我们将介绍Java中的Caesar Cipher。
在密码学中,我们曾经研究过不同的算法或技术,以对不同的消息集进行加密和解密,以获得机密性,完整性或某种安全性。
通常,这些事情是通过实施此类技术来实现的,有时结合其他算法以提高安全级别。
在本文中,我们将讨论其中一种 加密技术 这是最早,最简单的方法之一,以尤利乌斯·凯撒(Julius Caesar)命名。
在讨论该技术的实际算法和过程之前,我们必须熟悉可能需要理解的几个术语,这是了解该技术工作的前提。
- 纯文本 :它是未特殊格式化或计算的文本。简单来说,就是我们计划发送给最终用户的原始消息。
- 加密 :这是使用不同的加密算法对给定消息或明文进行编码的过程,以确保只有授权的用户或参与方才能对其进行解码并访问以供使用。
- 密文 :是格式化后的文本,或者说是加密后数据的加扰形式。在给定的纯文本上应用了一些加密算法后,我们得到的编码文本或消息称为密文。
- 解密: 这是我们获取加密消息或密文回到其原始形式的过程。在大多数情况下,这些算法本质上是可逆的,因此在这些情况下,我们以相反的方式直接应用相同的加密算法。
注意:这些术语按照在密码术中使用的顺序进行说明。
现在,既然我们知道所有相关术语,我们就来讨论Caesar Cipher的实际算法
算法
这是一种简单的替换密码类型,在这种方式中,给定文本消息的每个字母或单词都被一个固定数目的字母替换为原始字母。
我们确定该固定数字,例如,如果我们将该数字选择为2,则A将被C替换,B将被D替换,依此类推。
此固定数字表示移位,即文本中每个字母必须向下移动的位置数。
修改方法
(在这种情况下,如果shift等于2,我们还可以修改将字符向上移给用户的算法,在这种情况下,A将被Y替换,B将被Z替换,依此类推。)
实作
步骤1(映射纯文本):
我们首先将每个字母表示或转换为数字,因此,字母将映射到从0开始的数字,例如A = 0,B = 1,。 。 。 。 。 ,Z = 25。
第2步(加密和获取CipherText):
为了对明文或消息进行加密,我们在步骤1中添加了移位(作为用户的输入)到提取字母的映射表示中。
我们通过输入文本进行迭代,并对文本中的每个字母重复步骤2,以获得密文。
En =(x+ n ) mod 26 , 其中n表示移位。
步骤3(解密并获取我们的原始文本):
现在,要解密它,我们遵循相同的算法,但与前面讨论的算法相反,这里我们将从步骤2中获得的表示中减去偏移,以获取原始文本。
Dn =(x– n ) mod 26 , 其中n表示移位。
这是在Java中实现Caesar Cipher的Java程序。
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 |
包 组织 . Arpit . 爪哇 2blog ; 进口 爪哇 . 实用程序 . 扫描器 ; 上市 类 凯撒密码网 { 上市 静态的 最后 串 阿尔法 = “ abcdefghijklmnopqrstuvwxyz”; //是静态的,因为所有其他函数都是静态的,因此我们无法从 //非静态 上市 静态的 串 编码方式 ( 串 感叹 , 整型 转移 ) { 感叹 = 感叹 . 降低大小写 (); //将文本转换为小写 串 密码 = ” ; //初始化空字符串以迭代添加字母 对于 ( 整型 i = 0; i < 感叹 . 长度 (); i ++ ) { 整型 映射V = 阿尔法 . 指数 ( 感叹 . 字符 (i)); //每个字母的值以整数表示,例如A = 0,B = 1 ... 整型 enVal = ( 转移 + 映射V ) % 26; 烧焦 值 = 阿尔法 . 字符 ( enVal ); //要替换的字符 密码 = 密码 + 值 ; //添加到密文 } 返回 密码 ; } //按照相同的算法,但是相反的方式,明文变为 //密文,反之亦然 上市 静态的 串 解码 ( 串 密码 , 整型 转移 ) { 密码 = 密码 . 降低大小写 (); //将文本转换为小写 串 感叹 = ” ; //初始化空字符串以迭代添加字母 对于 ( 整型 i = 0; i < 密码 . 长度 (); i ++ ) { 整型 映射V = 阿尔法 . 指数 ( 密码 . 字符 (i)); 整型 德瓦尔 = ( 映射V - 转移 ) % 26; 如果 ( 德瓦尔 < 0) //处理负值 { 德瓦尔 = 阿尔法 . 长度 () + 德瓦尔 ; } 烧焦 值 = 阿尔法 . 字符 ( 德瓦尔 ); //要替换的字符 感叹 = 感叹 + 值 ; //添加到纯文本 } 返回 感叹 ; } 上市 静态的 虚空 主要 ( 串 [] args ) { 扫描器 扫描 = 新 扫描器 ( 系统 . 在 ); 系统 . 出 . 打印 (“输入要加密的短信”); 串 味精 = 新 串 (); 味精 = 扫描 . 下一个 (); 系统 . 出 . 打印 (“加密的文本:” + 编码方式 ( 味精 , 4)); 系统 . 出 . 打印 (“解密的文本:”); 系统 . 出 . 打印 ( 解码 ( 编码方式 ( 味精 , 4), 4)); 扫描 . 关 (); } } |
上面代码的输出如下所示,因为我们可以看到输入的文本是以加密形式获得的,然后我们再次对其解密以获取原始文本。
输出:
加密文本:lmevtmx
解密文本:hiarpit
那’关于Java中的Caesar Cipher的全部内容。
Comments
它显示了密码+ 值 和Plaint + 值 中的错误
我的意思是从哪里得到他们
嗨,阿卜杜勒,
对错别字表示歉意,并感谢您指出。
我已经修复了代码,如果您遇到此问题,请告诉我。