这是一个创建于 3274 天前的主题,其中的信息可能已经有所发展或是发生改变。
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Scanner;
public class Reverse
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
System.out.println("Please input the flag :");
String str = s.next();
System.out.println("Your input is :");
System.out.println(str);
char[] stringArr = str.toCharArray();
Encrypt(stringArr);
}
public static void Encrypt(char[] arr) {
ArrayList Resultlist = new ArrayList();
for (int i = 0; i < arr.length; i++) {
int result = arr[i] + '@' ^ 0x20;
Resultlist.add(Integer.valueOf(result));
}
int[] KEY = { 180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65 };
ArrayList KEYList = new ArrayList();
for (int j = 0; j < KEY.length; j++) {
KEYList.add(Integer.valueOf(KEY[j]));
}
System.out.println("Result:");
if (Resultlist.equals(KEYList))
System.out.println("Congratulations !");
else
System.err.println("Error !");
}
}
以上是代码,请问怎么求正确的密钥值呀
是不是输入的值经过加密和 Keylist 里面的值挨个比较?
比如我输入 abc ,然后 abc 经过加密 : a+'@'^0x20=180 ?然后逆过来求 a 的值??从 key 的矩阵来看总共有 18 位,也就是说输入的值应该有 18 位吧??是不是这些都换算成二进制再来求解的?比如 key 的第一位 180 是 10 进制换算成二进制之后再减去之前的'@'^0x20 的二进制??求大神解答