【Java加解密】反向凯撒密码
【思路】
反向凯撒加密的思路是让字符串先反向,再移位。
这种加密能保持和原文等长,比纯凯撒加密相对难猜。
【代码】
package com.hy.cypher; public class ReverseCaesar { // 加密 private static String encrypt(String str,int seed){ char[] arr=str.toCharArray(); int n=arr.length-1; for(int i=0,j=n;i<j;i++,j--) { arr[i]+=seed; arr[j]+=seed; char temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } return String.valueOf(arr); } // 解密 private static String decrypt(String str,int seed){ char[] arr=str.toCharArray(); int n=arr.length-1; for(int i=0,j=n;i<j;i++,j--) { arr[i]-=seed; arr[j]-=seed; char temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } return String.valueOf(arr); } public static void main(String[] args) { String[] arr={"ACBDEFD","1234567","ABCMD23132dds","大于等于2132ADE",}; for(String str:arr){ String enStr=encrypt(str,25); String deStr=decrypt(enStr,25); String msg=String.format("原字符串=%s 加密后=%s 还原后=%s",str,enStr,deStr); System.out.println(msg); } } }
【输出】
原字符串=ACBDEFD 加密后=]_^D[\Z 还原后=ACBDEFD 原字符串=1234567 加密后=PON4LKJ 还原后=1234567 原字符串=ABCMD23132dds 加密后=}}KLJ3K]f\[Z 还原后=ABCMD23132dds 原字符串=大于等于2132ADE 加密后=^]ZKL1K产筢产奀 还原后=大于等于2132ADE
END