字符串XOR加密测试

【代码】

复制代码
package com.hy.lab.code;

/**
 * 字符串XOR加密测试
 */
public class XorProcess {
    // 得到一定长度的随机字符串
    private static String getRndString(int size){
        char[] arr=new char[size];

        for(int i=0;i<size;i++){
            arr[i]=(char)rnd(32,126);
        }

        return String.valueOf(arr);
    }

    // 得到某区间内随机数
    private static int rnd(int min,int max) {
        return (int)(min+Math.random()*(max-min+1));
    }

    private static void process(String original){
        int n=original.length();
        String key=getRndString(n);// 密钥字串

        byte[] arr1=original.getBytes();
        byte[] arr2=key.getBytes();
        int length=arr1.length;
        byte[] arr3=new byte[length];

        for(int i=0;i<length;i++){
            arr3[i]=(byte)(arr1[i] ^ arr2[i]);
        }
        String enStr=new String(arr3);

        byte[] arr4=new byte[length];
        for(int i=0;i<length;i++){
            arr4[i]=(byte)(arr3[i] ^ arr2[i]);
        }
        String deStr=new String(arr4);

        String msg=String.format("原文=%s 密文=%s 译文=%s",original,enStr,deStr);
        System.out.println(msg);
    }

    public static void main(String[] args){
        String[] arr=new String[]{"abc","1234567","dsadsadsads2321"};
        for(int i=0;i<arr.length;i++){
            process(arr[i]);
        }
    }
}
复制代码

【输出】

原文=abc 密文=<EZ 译文=abc
原文=1234567 密文=YphArPa 译文=1234567
原文=dsadsadsads2321 密文=:N
[x@ 译文=dsadsadsads2321

END

posted @   逆火狂飙  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-03-19 求用户登录流水表中的用户连续登录天数
2019-03-19 做能成功的事
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示