用位运算的异或运算 实现加密和解密的功能 (Java经典编程案例)

本实例用位运算的异或运算符 “^” 把字符串与一个指定的值进行异或运算,从而改变字符串中每个字符的值,这样就可以得到一个加密后的字符串。
把加密后的字符串作为程序的输入内容,异或运算会把加密后的字符串还原为原有的字符串的值。代码如下:

import java.util.Scanner;
/**
 * 用位运算的异或运算实现加密和解密的功能
 */
public class Example {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符串或解密字符串:");
        String password = scanner.nextLine(); //获取用户输入
        char[] array = password.toCharArray(); //获取字符数组
        for(int i=0;i<array.length;i++) { //遍历字符数组
            array[i] = (char)(array[i]^20000); //对每个数组元素进行异或运算
        }
        System.out.println("加密或解密后的结果为:" + new String(array));
    }
}

在控制台输入字符串比如:aabbcc ,按enter键,即可出现加密后的结果:
在这里插入图片描述

复制加密后的结果,重新执行程序,把加密后的字符串作为程序的输入内容,输入,按enter键,即可出现解密后的结果:
在这里插入图片描述

要点:如果某个字符(或数值) x 与一个数值 m 进行异或运算得到有 y ,则再用 y 与 m 进行异或运算就可以还原为 x ,因此这个原理可以实现加密和解密功能。

猜你喜欢

转载自blog.csdn.net/cui_yonghua/article/details/91879974
今日推荐