900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java实现”凯撒密码“的加密解密

java实现”凯撒密码“的加密解密

时间:2020-08-09 20:44:03

相关推荐

java实现”凯撒密码“的加密解密

一、前言

凯撒密码,最早是由古罗马将军凯撒发明,用于军队中传递信息,是一种位移加密的密文算法。由于英文是26个字母,所以最多解密出现25种情况,用程序来讲还是很少的例举,比较简单。所以用代码实践,实现凯撒密码的加解密,简单破译凯撒密码

二、逻辑实现

private final static String codeRefer="ABCDEFGHIJKLMNOPQRSTUVWXYZ";//对照码/*** 凯撒密码加密解密* @param text 文本* @param offset 偏移量*/public static String KSMMEncryptionDecrypt(String text,int offset) {String result="";for(int i=0; i<text.length(); i++) {String code=text.substring(i,i+1);int index=codeRefer.indexOf(code);if(index!=-1){result+=KSMMDecryptToCode(index,offset);}else {result+=code;}}return result;}/*** 凯撒密码解密* @param ciphertext 密文*/public static List KSMMDecrypt(String ciphertext) {List resultList=new ArrayList<>();for(int j=1; j<codeRefer.length(); j++) {String result="";for(int i=0; i<ciphertext.length(); i++) {String code=ciphertext.substring(i,i+1);int index=codeRefer.indexOf(code);if(index!=-1){result+=KSMMDecryptToCode(index,j);}else {result+=code;}}resultList.add(result);}return resultList;}/*** 凯撒密码单个字符解密* @param index 字符下标* @param offset 偏移量* @return*/public static String KSMMDecryptToCode(int index,int offset) {String code="";index+=offset;if(index>=codeRefer.length()) {index%=codeRefer.length();}code=codeRefer.substring(index, index+1);return code;}

三、程序运行

public static void main(String[] args) throws Exception {// TODO Auto-generated method stubString text="我想说:what are you doing!";String ciphertext=KSMMEncryptionDecrypt(text.toUpperCase(),23);System.out.println("---密文:"+ciphertext);List<String> list=KSMMDecrypt(ciphertext.toUpperCase());for(String str:list) {System.out.println("---:"+str.toLowerCase());}}

ok,终了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。