【算法】Java凯撒密码实现方法 | 您所在的位置:网站首页 › 凯撒密码的实现 › 【算法】Java凯撒密码实现方法 |
【算法】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 实验室设备网 版权所有 |