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 的二进制??求大神解答
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://v2ex.ih06.com/t/229209
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.