爪哇 2博客
  爪哇 2博客

爪哇 中的Caesar密码

在本文中,我们将介绍Java中的Caesar Cipher。

在密码学中,我们曾经研究过不同的算法或技术,以对不同的消息集进行加密和解密,以获得机密性,完整性或某种安全性。

通常,这些事情是通过实施此类技术来实现的,有时结合其他算法以提高安全级别。

在本文中,我们将讨论其中一种 加密技术 这是最早,最简单的方法之一,以尤利乌斯·凯撒(Julius Caesar)命名。

在讨论该技术的实际算法和过程之前,我们必须熟悉可能需要理解的几个术语,这是了解该技术工作的前提。

  1. 纯文本 :它是未特殊格式化或计算的文本。简单来说,就是我们计划发送给最终用户的原始消息。
  2. 加密 :这是使用不同的加密算法对给定消息或明文进行编码的过程,以确保只有授权的用户或参与方才能对其进行解码并访问以供使用。
  3. 密文 :是格式化后的文本,或者说是加密后数据的加扰形式。在给定的纯文本上应用了一些加密算法后,我们得到的编码文本或消息称为密文。
  4. 解密: 这是我们获取加密消息或密文回到其原始形式的过程。在大多数情况下,这些算法本质上是可逆的,因此在这些情况下,我们以相反的方式直接应用相同的加密算法。

注意:这些术语按照在密码术中使用的顺序进行说明。

现在,既然我们知道所有相关术语,我们就来讨论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程序。

凯撒密码网.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));
         扫描 .();
    }
}
 

上面代码的输出如下所示,因为我们可以看到输入的文本是以加密形式获得的,然后我们再次对其解密以获取原始文本。

输出:

输入要加密的短信hiarpit
加密文本:lmevtmx
解密文本:hiarpit

那’关于Java中的Caesar Cipher的全部内容。

分享这个

作者

关注作者

相关文章

  • 10月22日

    爪哇 如何分布

    简介Java被认为是最安全的平台和编程语言。 爪哇 由Sun Microsystems于1995年开发。它是开发人员中最常用的语言,易于理解和编码。 爪哇 使您可以构建多个应用程序。它允许您在一台计算机上运行这些应用程序[…]

  • 3月26日

    爪哇 布尔默认值

    在本文中,我们将看到Java中boolean和Boolean的默认值。💡你知道吗?布尔值的默认值为false,包装器类布尔值为null。这是演示相同示例的示例。 [crayon-601f28a9b9d40048391320 /]输出:布尔值的默认值:false布尔值(包装器)的默认值:null…]

  • 4月11日

    爪哇 中的System.out.println

    在这篇文章中,我们将了解Java中的System.out.println及其工作方式。您以前使用过system.out.println吗?我认为这是每个Java开发人员都会编译的第一句话。通常用首字母缩写词来称呼"SOP"。什么是System.out.println? 系统 .out.println是Java语句,它打印传递到控制台的参数。系统是一类的[…]

  • 4月01

    爪哇 float vs double

    在本文中,我们将看到Java中的float和double数据类型之间的区别。如您所知,float和double都可以用来表示Java中的浮点数。我们将看到float和double的区别,以及何时使用double vs float的区别。 double和[…]

  • 10月28日

    如何在Java中从用户那里获取输入

    在这篇文章中,我们将看到如何在Java中接受用户的输入。有时您希望从用户那里获取输入并根据用户输入运行程序。有很多方法可以从用户那里获取输入,其中一些是:使用Scanner使用BufferReader使用Scanner类Scanner类[…]

  • 9月28日

    您可以选修的5门在线编程课程,以改善您的职业

    编程的美在于您和您的编程技能一样出色。学习编程语言有很多好处。大多数公司都非常重视程序员,他们的技能受到大多数公司的重视。但是编程不仅仅是可就业性。当您学习编程时,就会为自己打开新的大门。你可以 […]

Comments

    1. 嗨,阿卜杜勒,
      对错别字表示歉意,并感谢您指出。
      我已经修复了代码,如果您遇到此问题,请告诉我。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇 2博客