【问题标题】:AES encryption algorithm, paralel programming,javaAES加密算法,并行编程,java
【发布时间】:2013-02-07 22:23:33
【问题描述】:

我有一个与朋友一起编写的项目,但我们遇到了线程问题。代码选择一个文件,对其进行加密或解密并将其写入一个文件(每个文件 pdf、docx、mpeg、mkv 等)。

选中,用 RandomAccessFile 打开一个输入输出对象,

byte[] temp new byte[16];
readedByte=1;
while(16*readedByte<fileLenght){
                for(i=0;i<16;i++){
                temp[i]=input.readByte();
                }
                byte[] newTemp=AES.encrypt(temp, k.getBytes("ISO-8859-9"));
                output.write(newTemp);
                readedByte++;
            }

我想写一个线程来完成这项工作。线程将读取 16 个字节,加密它们并写入输出对象。

【问题讨论】:

  • 为什么要写一个显式线程来完成这项工作?是为了不阻塞用户界面吗?
  • 实际上必须编写一个线程,我认为这种方式最简单,因为它具有读取文件和写入文件的功能。如果你想的比它更好,我听你的:)

标签: java aes


【解决方案1】:

只需将您的方法放在运行中。并尝试对其进行调整以解决您的问题

Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                byte[] temp = new byte[16];
                int readedByte = 1;
                while(16 * readedByte < fileLenght) {

                    for(int i = 0; i < 16; i++) {
                        temp[i] = input.readByte();
                    }
                    byte[] newTemp = AES.encrypt(temp, k.getBytes("ISO-8859-9"));
                    output.write(newTemp);
                    readedByte++;
                }

            }
        });
        thread.start();

【讨论】:

  • 输入输出在哪里?我可以在每个线程上打开和关闭文件,但这对性能没有好处
  • 只需在线程外执行,然后将您想要检查的内容作为线程中的变量传递
  • 您不会将参数直接提供给线程,而只需将其声明为类变量,您可以将其传递到任何您需要的地方
猜你喜欢
  • 1970-01-01
  • 2014-09-14
  • 2020-10-15
  • 2018-03-07
  • 2011-06-05
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多