【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 @   逆火狂飙  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2019-03-09 【Canvas与游戏】Bombman v1.04
2019-03-09 【Canvas与艺术】模拟八一电影制片厂电影片头效果
2019-03-09 【Canvas技法】蓝布底金字北岛诗节选(背景图片、文字阴影示例)
2017-03-09 “阿基里斯与乌龟”的终结性思考
2017-03-09 生活本来的样子
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示