加密解密--异或方式

异或加密解密

异或机密和解密工具类

package utils;
/**
 * @ClassName: SecurityUtil
 * @Description: TODO	加密和解密
 * @author: wangyl
 * @date: 2020年8月27日 下午2:27:57
 * 
 *
 */

public class SecurityUtil {
	
	/*
	 * 通过异或的方式实现加密和解密
	 * 开始前需要先捋清楚加密和解密的参数和返回值
	 * 参数:传入字符串	String(“abc”)
	 * 返回值:返回字符串	String(“xyz”)
	 */
	
	
	/**
	 * 
	 * @Title: xor		异或的单词
	 * @Description: TODO
	 * @author: wangyl 
	 * @param input		加密字符参数
	 * @return
	 * @return: String	加密后的字符串
	 */
	public String xor(String input){
		/*
		 * 由于是使用异或的方式进行加密,但是异或是单独对每一个字符进行异或加密
		 * 也就是“abc”需要变成{a,b,c}
		 */
		char[] chs = input.toCharArray();
		//获取到了字符数组后就需要对每个字符进行异或加密
		for (int i = 0; i < chs.length; i++) {
			//这里对每一个字符进行异或,这里使用12345进行异或
			chs[i]=(char) (chs[i]^12345);
			/**
			 * (char) (chs[i]^12345);
			 * 这里使用强制转换是因为chs[i]是char类型,12345是int类型,
			 * 直接异或会变成int类型(小类型到大类型自动转换)
			 * 单个字符串异或后需要将原来的值替换掉
			 * 接受的是个char类型,需要强制转换(大类型到小类型)
			 */
		}
		//将加密后的字符数组转换成字符串并返回(这里没有新建对象世界使用input)
		input = new String(chs);//使用String的构造方法转换
		return input;
	}
}

测试加密/解密

	public static void main(String[] args){
		//异或加密
		String input = "异或加密测试";//需要加密的字符
		String output = xor(input);//加密后输出的字符
		System.out.println("异或加密结果:"+output);//异或加密结果:漻刯抙毿嵲믬
		
		
		//异或解密
		/**
		 * 异或第一次是加密,再异或第二次就是解密
		 * 这里参数使用加密后的字符串进行异或
		 */
		input = xor(output);
		System.out.println("异或解密结果:"+input);//异或解密结果:异或加密测试
	}

注意事项:

1、由于异或是可逆操作,异或的加密元素(12345)被发现后是可以被破解的
2、异或的字符串为什么不能直接异或,而是需要转换成字符后才能异或,原因是数字和字符串之间不能进行数学操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值