我正在尝试使用未知 key 解密加密文件 - 我唯一知道的是 key 是整数 x, 0 <= x < 1010 (即最多 10 位十进制数字)。
public static String enc(String msg, long key) {
String ans = "";
Random rand = new Random(key);
for (int i = 0; i < msg.length(); i = i + 1) {
char c = msg.charAt(i);
int s = c;
int rd = rand.nextInt() % (256 * 256);
int s2 = s ^ rd;
char c2 = (char) (s2);
ans += c2;
}
return ans;
}
private static String tryToDecode(String string) {
String returnedString = "";
long key;
String msg = reader(string);
for (long i = 0; i <= 999999999; i++) {
System.out.println("decoding message with key + " + i);
key = i;
System.out.println("decoding with key: " + i + "\n" + enc(msg, key));
}
return returnedString;
}
我希望找到纯文本 程序运行速度很慢,有什么办法可以提高效率吗?
最佳答案
如果您使用 Java 8 来实现此目的,则可以使用 JAVA 8 中添加的并行数组操作。
最适合您的是使用 Spliterator
public void spliterate() {
System.out.println("\nSpliterate:");
int[] src = getData();
Spliterator<Integer> spliterator = Arrays.spliterator(src);
spliterator.forEachRemaining( n -> action(n) );
}
public void action(int value) {
System.out.println("value:"+value);
// Perform some real work on this data here...
}
我还不清楚你的情况。这里有一些很棒的教程和文章,可以帮助您了解 Java 8 的哪些并行数组操作?
http://www.drdobbs.com/jvm/parallel-array-operations-in-java-8/240166287
https://blog.rapid7.com/2015/10/28/java-8-introduction-to-parallelism-and-spliterator/
关于java - 我需要有效地解密文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47657805/