服务器之家

服务器之家 > 正文

java使用异或实现变量互换和异或加密解密示例

时间:2019-11-05 11:38     来源/作者:java教程网

代码如下:


import java.util.Scanner;

 

public class VariableExchange {
    public static void main(String[] args){
        System.out.println("请输入变量A的值");
        Scanner scanner=new Scanner(System.in);
        long A=scanner.nextLong();
        System.out.println("请输入变量B的值");
        Scanner scannerB=new Scanner(System.in);
        long B=scannerB.nextLong();
        System.out.println("A="+A+"\t"+"B="+B);
        System.out.println("执行变量互换...");
        A=A^B;
        B=B^A;
        A=A^B;
        System.out.println("A="+A+"\t"+"B="+B);
    }
}

 

其实现是巧用了异或运算。

其原理:

复制代码代码如下:


a = a ^ b;
b = b ^ a;
a = a ^ b;

 

 

复制代码代码如下:


a1=a^b
b=a1^b=(a^b)^b=a
a=a1^b =a1^(a1^b)=a1^a1^b=b

 

同一变量与另一变量和其异或值异或等于自身。

该原理同样可运用于加密。将其值与key进行异或得到加密后的串,解密操作也只需与key再异或一次。

补充:
Scanner类:
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
例1:

复制代码代码如下:


Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

 

例2:

复制代码代码如下:


Scanner sc = new Scanner(new File("myNumbers"));
 while (sc.hasNextLong()) {
       long aLong = sc.nextLong();
}

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部