是否可以使用Java中的RSA并发解密大型加密文件?

时间:2019-03-01 12:00:04

标签: java concurrency

我有24个相当大的RSA加密文件,我想解密它们。我正在使用线程独立地解密它们,但是我仍然花费太多时间来获得结果。所以问题是我是否可以在解密一个文件的过程中使用多个线程。

1 个答案:

答案 0 :(得分:0)

首先,RSA不是握手吗?您可能是指AES。

第二,请确保所有缓冲的I / O流都具有8192或16384或更多字节,这只是预防措施。

第三,我不认为这是微不足道的,因为密码是设计使然的流或块算法,其后继字节取决于更安全的字节。

话虽这么说,如果您在加密方面非常有能力,并且愿意手工重做,您可以通过几个线程(可能使用简单的队列和线程seda或环和线程破坏者模式)对解密的各个步骤进行流水处理。

解密AES文件(或相反)可能需要一些尴尬的顺序步骤(借用“令人尴尬的并行”表示),例如文件的字节加载,块哈希验证,密码更新和解密。

如果坚持使用多个线程来独立处理文件,则您的CPU可能使用得很好,但是却在磁盘上竞争。而且,如果减少线程以最大程度地减少磁盘争用,则会利用不足的CPU。因此,重要的是要同时检查磁盘和cpu的使用情况,以定位正确的瓶颈,并使i / o的线程数与cpu的线程数脱钩。从磁盘加载中隔离字节解密块可能是一个不错的第一步。