java版AES文件加密速度问题

        简单的一个java版的AES文件加密demo, 运行正常, 但文件一大速度就会很慢,不知道是否能优化一下,以提高增快加密的速度, 或许是我的代码写法有问题, 希望各位大俠指正

      
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

public class AES {

 // 加密文件
 public static void encryptfile(String pwd, File fileIn) throws Exception {
  try {
            //读取文件
   FileInputStream fis = new FileInputStream(fileIn);
   byte[] bytIn = new byte[(int) fileIn.length()];
   for (int i = 0; i < fileIn.length(); i++) {
    bytIn[i] = (byte) fis.read();
   }
            //AES加密
   KeyGenerator kgen = KeyGenerator.getInstance("AES");
   kgen.init(128, new SecureRandom(pwd.getBytes()));
   SecretKey skey = kgen.generateKey();
   byte[] raw = skey.getEncoded();
   SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
   Cipher cipher = Cipher.getInstance("AES");
   cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
            //写文件
   byte[] bytOut = cipher.doFinal(bytIn);
   FileOutputStream fos = new FileOutputStream(fileIn.getPath()
     + ".aes");
   for (int i = 0; i < bytOut.length; i++) {
    fos.write((int) bytOut[i]);
   }
   fos.close();
   fis.close();
  } catch (Exception e) {
   throw new Exception(e.getMessage());
  }
 }
 public static void main(String[] args) throws Exception {
  AES aes = new AES();
  String pwd = "123";
  File file = new File("d:/xxx.doc");
  aes.encryptfile(pwd, file);
 }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java加密文件速度快主要有以下几点原因: 1. Java语言本身具备较高的执行效率。Java作为一种编译型语言,通过将源代码编译成字节码,再由Java虚拟机(JVM)解释执行,具备较高的执行效率。相对于解释型语言,比如Python,Java的运行速度更快。 2. Java提供了丰富的加密算法。Java标准库中提供了多种加密算法的实现,例如对称加密算法(如DES、AES)、非对称加密算法(如RSA)、散列算法(如MD5、SHA等),以及数字签名等。这些算法已经经过优化和测试,能够高效地处理各种加密需求。 3. Java提供了多线程支持。多线程可以让Java程序同时执行多个任务,提高了程序的并发性和处理速度。在加密文件时,可以利用多线程并行处理,加快加密速度。当然,在多线程编程中也需要注意线程安全问题。 4. Java提供了IO流处理机制。Java标准库中提供了多种IO流类,可以方便地进行文件读写操作。加密文件通常需要逐字节或逐块读写,Java的IO流机制可以有效地支持这些操作,提高了处理速度。 综上所述,Java加密文件速度快是由于Java语言本身具备高执行效率、提供了丰富的加密算法、支持多线程和提供了IO流处理机制等原因。当然,具体的加密速度还与算法的复杂度、文件大小等因素有关。 ### 回答2: Java加密文件速度快的原因有以下几点: 首先,Java是一种编程语言,它具有很高的执行效率和优化能力。Java编译器能够将源代码编译为字节码,然后通过Just-in-time(JIT)编译器将字节码转换为机器码,从而提高了代码的执行速度。 其次,Java提供了丰富的加密算法库和工具包,包括对称加密算法(如AES、DES)、非对称加密算法(如RSA)、散列算法(如MD5、SHA等),这些算法都经过了严格的测试和优化,能够在保证加密安全性的同时,提供较高的运算速度。 另外,Java语言在多线程编程方面具有很好的支持。我们可以利用Java提供的线程池机制,将文件加密过程分解为多个任务,并行运行,从而提高加密速度。 此外,Java还提供了NIO(NewIO)机制,它能够实现非阻塞IO,提高文件读写的效率。通过使用NIO的通道(Channel)和缓冲区(Buffer),能够实现高效的文件加密和解密操作。 总结而言,Java加密文件速度快是由于Java语言本身的执行效率和优化能力、丰富的加密算法库和工具包、多线程编程和NIO等机制的支持所致。当然,具体的加密速度还取决于使用的加密算法、文件大小和硬件设备等因素。 ### 回答3: Java加密文件速度快,这主要有以下几个原因:首先,Java编译后的字节码由JVM解释执行,JVM具有即时编译器(JIT)的特性,可以将频繁执行的代码块编译为本地机器码,从而提高执行速度。因此,Java加密算法在JVM中执行时,由于经过优化和编译,速度相对较快。 其次,Java提供了丰富的加密相关库和API,如Java Cryptography Extension (JCE),这些库和API提供了一系列高效的加密算法和功能,如对称加密、非对称加密和消息摘要等,可以方便地进行文件加密和解密操作。 此外,Java中的多线程机制也可以提高文件加密速度。通过利用多线程并行处理文件的不同部分,可以加快加密过程。特别是在大文件加密时,可以将文件划分为多个部分,每个部分由一个线程进行处理,以减少加密时间。 最后,Java拥有跨平台的特性,可以在不同的操作系统上运行,而且其加密算法和功能的实现方式比较统一,不会产生太大的性能差异,因此在不同系统上的加密文件速度相对稳定。 综上所述,由于Java在编译后的执行效率高、提供了丰富的加密库和API、支持多线程并行处理和具备跨平台特性等优势,使得Java加密文件速度相对较快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值