Java通过异或运算实现字符串解密

public class MyStringUtils {

// public static String encryptString(String target,Integer factor){
// byte[] bytes = target.getBytes();
// for (int i = 0; i < bytes.length; i++) {
// bytes[i] ^= factor;
// }
//
// return new String(bytes);
// }
//
// public static String decodeString(String target, Integer factor){
// byte[] bytes = target.getBytes();
// for (int i = 0; i < bytes.length; i++) {
// bytes[i] ^= factor;
// }
//
// return new String(bytes);
// }

<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> String encryptString(String target,Integer factor){
    </span><span style="color: #0000ff;">char</span>[] chars =<span style="color: #000000;"> target.toCharArray();
    </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i &lt; chars.length; i++<span style="color: #000000;">) {
        chars[i] </span>^=<span style="color: #000000;"> factor;
    }

    </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> String(chars);
}

</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> String decodeString(String target, Integer factor){
    </span><span style="color: #0000ff;">char</span>[] chars =<span style="color: #000000;"> target.toCharArray();
    </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i &lt; chars.length; i++<span style="color: #000000;">) {
        chars[i] </span>^=<span style="color: #000000;"> factor;
    }

    </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> String(chars);
}

</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {
    String target </span>= "你好啊"<span style="color: #000000;">;
    </span><span style="color: #0000ff;">int</span> factor = 31<span style="color: #000000;">;
    String encryptString </span>=<span style="color: #000000;"> encryptString(target, factor);
    System.out.println(</span>"加密后的字符串为===="+<span style="color: #000000;">encryptString);
    System.out.println(</span>"解密后的字符串为===="+<span style="color: #000000;">decodeString(encryptString, factor));
}

}

输出结果

加密后的字符串为====使奢啕
解密后的字符串为====你好啊

思考:

为什么我把字节数组那段给注释掉了

如果使用字节数组会出现什么问题

posted @ 2022-07-24 19:22  杜嘟嘟  阅读(569)  评论(0)    收藏  举报