java使用异或实现变量互换和异或加密解密示例
时间:2023-10-19 16:53:38
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();
}
标签:异或,加密,解密
0
投稿
猜你喜欢
详解java爬虫jsoup解析多空格class数据
2021-12-30 14:47:41
C#中RSA加密与解密的实例详解
2022-09-01 15:43:06
Android 6.0以上权限拒绝打开权限设置界面的解决方法
2021-11-07 01:59:35
VSCode配置C语言环境的方法
2022-11-07 18:47:36
利用java实现单词倒序排列
2023-07-01 04:30:51
C# 计算DataTime的4种时间差的方法(相差天数、相差小时、相差分钟、相差秒)
2022-12-08 10:37:07
Java反射获取class对象方式解析
2023-04-22 15:51:30
Android App实现应用内部自动更新的最基本方法示例
2022-11-02 02:49:46
C#实现过滤sql特殊字符的方法集合
2022-01-30 23:58:04
Android View自定义锁屏图案
2021-11-21 14:48:20
Android应用启动另外一个apk应用的方法
2023-12-23 08:53:26
Java源码解析HashMap的keySet()方法
2023-11-11 06:33:05
使用Java和WebSocket实现网页聊天室实例代码
2023-11-26 00:16:02
Flutter加载图片流程MultiFrameImageStreamCompleter解析
2023-07-19 02:45:55
Java日期操作类常见用法示例
2021-06-17 01:12:59
C# TrackBar拖动条改变滑块颜色
2021-12-22 22:11:07
Windows下使用Graalvm将Springboot应用编译成exe大大提高启动和运行效率(推荐)
2023-09-27 02:05:02
c# 实现获取汉字十六进制Unicode编码字符串的实例
2023-03-21 11:22:35
Guava中这些Map技巧可以让代码量减少了50%
2023-03-16 02:35:42
C#中WPF颜色对话框控件的实现
2023-04-13 06:09:41