【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

 

posted @ 2022-03-09 21:23  逆火狂飙  阅读(139)  评论(0)    收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东