【算法】Java凯撒密码实现方法 您所在的位置:网站首页 凯撒密码的实现 【算法】Java凯撒密码实现方法

【算法】Java凯撒密码实现方法

2023-08-14 00:54| 来源: 网络整理| 查看: 265

【算法】Java凯撒密码实现方法 1、凯撒密码介绍

凯撒密码作为一种最简单的消息加密方式,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,由此可见,位数就是凯撒密码加密和解密的秘钥。

2、凯撒密码的实现

在此之前我们必须得了解一个基本概念==“移位和循环移位”==

移位和循环移位

​ 移位就是将一段数码按照规定的位数整体性地左移或右移。循环右移就是当右移时,把数码的最后的位移到数码的最前头,循环左移相反。

​ 例如,对十进制数码0123456789右移一位(十进制位)的结果为9012345678,而循环左移一位得到的结果则为1234567890。

凯撒密码就是使用的循环移位

2.1、基于ASCII码实现凯撒密码

加密方法如下:

@Test public void test(){ String abc = asciiCaesarEncrypt("ABC", 125); System.out.println(abc); } public String asciiCaesarEncrypt(String str,int offset){ char[] chars = str.toCharArray(); //循环位移算法 for (int i = 0; i chars[i]= (char) (i1%=128); }else if (i1 chars[i] += offset; } } return String.valueOf(chars); } 上面的运行结果 >?@

解密方法如下:

public String asciiCaesarDecrypt(String str,int offset){ char[] chars = str.toCharArray(); //循环位移算法 for (int i = 0; i chars[i]= (char) (i1%=128); }else if (i1 chars[i] -= offset; } } return String.valueOf(chars); } 2.2、基于字母表实现的凯撒密码

加密方法如下:

@Test public void test(){ String abc = lowerCaseCaesarEncrypt("zabc", 25); System.out.println(abc); } public String lowerCaseCaesarEncrypt(String str,int offset){ char[] chars=str.toCharArray(); char[] lowerCase=new char[26]; for (int i = 0; i int i1 = lowerCaseStr.indexOf(chars[i]) + offset; if(i1>25){ chars[i]=lowerCase[(i1%=26)]; }else if (i1 chars[i] += offset; } } return String.valueOf(chars); } 上面的运行结果 yzab

解密方法如下:

public String lowerCaseCaesarDecrypt(String str,int offset){ char[] chars=str.toCharArray(); char[] lowerCase=new char[26]; for (int i = 0; i int i1 = lowerCaseStr.indexOf(chars[i]) - offset; if(i1>25){ chars[i]=lowerCase[(i1%=26)]; }else if (i1 chars[i] -= offset; } } return String.valueOf(chars); }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有