java - 我需要有效地解密文件

标签 java encryption coding-efficiency

我正在尝试使用未知 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/

相关文章:

java - 从java到mongo db的数据访问有什么推荐的模式或策略吗?

python - (2 n) 使用 Python 的视觉密码学

javascript - 创建复杂 JavaScript 形状的有效方法

多个数字签名的算法?

java - 转换明文以执行 Elgamal 加密

python-3.x - 将 map() 与两个参数一起使用,其中一个参数是列表,另一个参数是整数

c - 哪种USB读取模式效率更高 : Multiple reads or one big read?

java - 在 JavaFX 中更改树单元格选定的字体颜色

java - 回顾中的反向引用

java - 从层次结构中捕获显式异常