/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCX0KfQ==
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKLyoqCiAqIOWunumqjDHvvJrliKnnlKjlvILmiJblrp7njrDlrZfnrKbkuLLliqDlr4blkozop6Plr4YKICovCnB1YmxpYyBjbGFzcyBFbmNyeXB0WE9SIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCiAgICAgICAgLy8gMS4g6L6T5YWl5piO5paH5ZKM5a+G6ZKlCiAgICAgICAgU3lzdGVtLm91dC5wcmludCgmcXVvdDvor7fovpPlhaXmmI7mlofvvJomcXVvdDspOwogICAgICAgIFN0cmluZyBwbGFpblRleHQgPSBzYy5uZXh0TGluZSgpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCZxdW90O+ivt+i+k+WFpeWvhumSpeWtl+espu+8miZxdW90Oyk7CiAgICAgICAgY2hhciBrZXkgPSBzYy5uZXh0TGluZSgpLmNoYXJBdCgwKTsKCiAgICAgICAgLy8gMi4g5Yqg5a+GCiAgICAgICAgU3RyaW5nIGNpcGhlclRleHQgPSBlbmNyeXB0KHBsYWluVGV4dCwga2V5KTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oJnF1b3Q75Yqg5a+G5ZCO55qE5a+G5paH77yaJnF1b3Q7ICsgY2lwaGVyVGV4dCk7CgogICAgICAgIC8vIDMuIOino+Wvhu+8iOW8guaIluS4pOasoei/mOWOn++8iQogICAgICAgIFN0cmluZyBkZWNyeXB0VGV4dCA9IGVuY3J5cHQoY2lwaGVyVGV4dCwga2V5KTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oJnF1b3Q76Kej5a+G5ZCO55qE5piO5paH77yaJnF1b3Q7ICsgZGVjcnlwdFRleHQpOwoKICAgICAgICBzYy5jbG9zZSgpOwogICAgfQoKICAgIC8vIOWKoOWvhi/op6Plr4bpgJrnlKjmlrnms5XvvIjlvILmiJbkuIDmrKHliqDlr4bvvIzlvILmiJbkuKTmrKHop6Plr4bvvIkKICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGVuY3J5cHQoU3RyaW5nIHRleHQsIGNoYXIga2V5KSB7CiAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgJmx0OyB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgLy8g6YCQ5Liq5a2X56ym5byC5oiWCiAgICAgICAgICAgIGNoYXIgYyA9IChjaGFyKSAodGV4dC5jaGFyQXQoaSkgXiBrZXkpOwogICAgICAgICAgICBzYi5hcHBlbmQoYyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzYi50b1N0cmluZygpOwogICAgfQp9
import java.util.Scanner;
/**
* 实验1:利用异或实现字符串加密和解密
*/
public class EncryptXOR {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1. 输入明文和密钥
System.out.print("请输入明文:");
String plainText = sc.nextLine();
System.out.print("请输入密钥字符:");
char key = sc.nextLine().charAt(0);
// 2. 加密
String cipherText = encrypt(plainText, key);
System.out.println("加密后的密文:" + cipherText);
// 3. 解密(异或两次还原)
String decryptText = encrypt(cipherText, key);
System.out.println("解密后的明文:" + decryptText);
sc.close();
}
// 加密/解密通用方法(异或一次加密,异或两次解密)
public static String encrypt(String text, char key) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
// 逐个字符异或
char c = (char) (text.charAt(i) ^ key);
sb.append(c);
}
return sb.toString();
}
}