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();
}


猜你喜欢
- MyBatis 通过包含的jdbcType类型BIT FLOAT CHAR &nbs
- 前言又到了新的一月,今天提供一个Android自定义底部上拉布局的实现,起因是自己在项目中需要实现这样一个控件,干脆自己写一个练练手。写完了
- 由于项目需要做一些图形展示,所以就想到了使用Directx和OpenGL来绘图,但项目准备使用C#来开发(大家比较熟悉C#),在网上看了相关
- 1.进入<Android_Source_Path>/build/target/product/security,找到【platf
- 平时开发的工作中, 自己组内的很多大佬经常使用Optional的用法, 自己问他们, 这个到底有什么好处呢,他们说可以很好的规避好空指针的问
- static关键字static关键词与对象无关。static关键字主要修饰四个部分的内容这里我们主要介绍static修饰属性和修饰方法。1.
- 引言周五去面试又被面试的一个问题问哑巴了面试官:StringBuilder和StringBuffer的区别在哪?我:StringBuilde
- 代理模式:为其他对象提供一种代理以控制某个对象的访问。用在:在某些情况下,一个客户不想或者不能直接访问另一个对象,而代理对象可以在客户端和目
- 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在AndroidManifest.xml注册ACTION事件<activi
- C#与C++ dll之间传递字符串string wchar_t* char* IntPtr1、由C#向C++ dll 传入字符串时,参数直接
- 一、bean实例化——构造方法(常用)bean本质上就是对象,创建bean使用构造方法完成BookD
- 一、使用Pull解析器读取XML文件除了可以使用SAX或DOM解析XML文件之外,大家也可以使用Android内置的Pull解析器解析XML
- 时间戳在游戏开发中虽然是一个比较小的功能?但是如果缺少这个功能就会导致开发遇到困难,为了帮助大家开发,下面就给大家介绍下将时间戳的使用方法,
- 为什么需要协程?协程可以简化异步编程,可以顺序地表达程序,协程也提供了一种避免阻塞线程并用更廉价、更可控的操作替代线程阻塞的方法 &
- 一、概述xml整合第三方框架有两种整合方案:不需要自定义名空间,不需要使用Spring的配置文件配置第三方框架本身内容,例如:MyBatis
- 前言在上一篇通知服务NotificationListenerService使用方法 中,我们已经介绍了如何使用NotificationLis
- 常量池中各数据项类型详解(续)(8) CONSTANT_Class_info常量池中的一个CONSTANT_Class_info,
- 软件需求VS2019社区版、win10操作系统、opencv4.1.0VS2019社区版(免费) 下载地址OpenCV4.1.0 下载地址配
- 这几天在做公司年会的一个抽奖软件,开始做的的时候,认为算法是很简单的,把员工的数据放进list里,把list的标号作为需要获取的随机数,根据
- 实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求。 为了解决这样的问题,spring Boot 为我们提供了一