前言:
而今兄弟们对“java异或字符”都比较关怀,小伙伴们都想要分析一些“java异或字符”的相关知识。那么小编也在网摘上搜集了一些有关“java异或字符””的相关内容,希望姐妹们能喜欢,看官们一起来学习一下吧!/** * 异或操作 * @param rawData 要异或的字节数组 * @param number 运算数 * @return 异或运算后的字节数组 */ public static byte[] Xor(byte[] rawData, int number) { byte[] encodeData = new byte[rawData.length]; for (int i = 0; i < rawData.length; i++) //遍历字符数组 { encodeData[i] = (byte) (rawData[i] ^ number); //对每个数组元素进行异或运算 } return encodeData; } /** * 异或加密 * @param rawStr 原文 * @param key 密钥 * @return 密文 */ public static String EncodeByXor(String rawStr, String key) { // 通过字符串拿到密钥 int number = 1; for (int i = 0; i < key.length(); i++) { number *= key.charAt(i); } // 转成字节数组 byte[] rawData = rawStr.getBytes(StandardCharsets.UTF_8); byte[] encodeData = Xor(rawData, number); // 把字节数组转成某种格式的字符串,方便传输(格式可以自定义,好解析就行) StringBuilder encodeStr = new StringBuilder(); for (byte b : encodeData) { encodeStr.append(b).append("x"); } return encodeStr.toString(); } /** * 异或解密 * @param encodeStr 密文 * @param key 密钥 * @return 原文 */ public static String DecodeByXor(String encodeStr, String key) { // 通过字符串拿到密钥 int number = 1; for (int i = 0; i < key.length(); i++) { number *= key.charAt(i); } // 解析EncodeByXor方法中的字节数组格式,找到加密后的字节数组 String[] strings = encodeStr.substring(0,encodeStr.length()-1).split("x"); byte[] rawData = new byte[strings.length]; for (int i = 0; i < strings.length; i++) { rawData[i] = Byte.parseByte(strings[i]); } // 异或一下 byte[] encodeData = Xor(rawData, number); // 重新编码成原始字符串 return new String(encodeData,StandardCharsets.UTF_8); } /** * 测试 * @param args */ public static void main(String[] args) { String enStr = EncodeByXor("aaaaaa","miyao"); System.out.println("加密后:"); System.out.println(enStr); String deStr = DecodeByXor(enStr,"miyao
"); System.out.println("解密后:"); System.out.println(deStr); }
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java异或字符 #java异或解密算法 #加密 异或 #java亦或