`
sds123456
  • 浏览: 6160 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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);
}
}
分享到:
评论
3 楼 baallee 2007-07-09  
for (int i = 0; i < bytOut.length; i++) {
fos.write((int) bytOut[i]);
}
你这样一个一个byte读写是很慢的

建议你用这2个方法
write(byte[] b)
将指定字节数组中 b.length 字节写入当前文件输出流。
write(byte[] b , int off, int len)
将指定字节数组中以偏移量 off开始的 len个字节写入当前文件输出流。

2 楼 pudgy 2007-07-07  
还有byte[] bytIn = new byte[(int) fileIn.length()];
文件大了,内存的占用很厉害。
建议用固定大小的缓冲区代替。
1 楼 pudgy 2007-07-07  
几点问题:
1.输入输出没有加Buffer.
2.没有用异步处理。

相关推荐

    java使用AES加密/解密文件

    在IT行业中,安全是至关...以上就是关于“java使用AES加密/解密文件”的详细说明,涵盖了生成密钥、加密文件以及解密文件的核心步骤。通过理解这些知识点,开发者可以有效地保护数据的安全,防止未经授权的访问和篡改。

    java前后端通讯AES加密及解密样例

    在提供的"demo"文件中,可能包含了具体的项目结构、配置文件、源代码等,这些内容可以帮助进一步理解和实现这个Java前后端通讯AES加密及解密的案例。实际操作时,需要根据文件内容进行相应的集成和调试。

    密码学AES算法(JAVA版本)

    ### 密码学AES算法(JAVA版本) #### 知识点概述 1. **AES算法简介**:高级加密标准(Advanced Encryption Standard,简称AES),是一种对称加密算法,被广泛应用于数据加密领域。 2. **Java实现AES算法**:通过...

    JAVA调用DLL实现AES文件加密(附源码)

    综上所述,通过Java调用DLL实现AES文件加密,结合查表法,能够在保持安全性的同时提高加密效率。这是一种有效的跨语言协作策略,对于需要高效处理大量数据的场景尤为适用。在实际项目中,可以根据具体需求进行调整和...

    aes对称加密所需jar

    然而,标准的Java Development Kit(JDK)并不直接提供所有可能的AES加密模式和参数,这可能导致在某些特定项目中遇到兼容性问题。 标题"aes对称加密所需jar"暗示了这个问题:项目在尝试使用AES加密时遇到了与JDK不...

    AES 加密字符串

    AESTestok.java 文件很可能是Java实现AES加密的一个示例代码。 **Delphi的AES加密示例** 在Delphi中,AES加密通常涉及到以下几个步骤: 1. 导入必要的加密库:如`uses ElAES;` 2. 创建AES对象:`var AES: TElAES;...

    用java实AES和RSA算法

    在给定的压缩文件中,"用java实AES和RSA算法"可能包含这些示例代码和其他相关资源,帮助开发者理解和实现这两种加密算法。通过学习和实践这些代码,开发者可以掌握在Java环境下使用AES和RSA的基本方法,并能够将其...

    aes加密js文件下载aes.js pad-zeropadding-min.js

    另外,还提供了一个名为`AesEncryptUtil.java`的后台工具类,它可能是为Java后端设计的,用于解密前端AES加密后的数据。在实际应用中,前端通常只负责加密,而解密则由信任的后端服务器完成,以避免密钥在客户端暴露...

    128位AES算法对文件进行加密解密(秘钥库自动生成的秘钥来加密)

    这个程序不需用户输入加密密码,而是自动生成密钥,这通常意味着它使用了KeyGenerator类来生成随机密钥。然而,该程序的限制在于没有提供文件保存位置的选择功能,这意味着加密后的文件会替换原始文件,或者默认保存...

    (Java)文件快速加密(异或加密)

    在实际应用中,通常会使用更复杂的加密算法,如AES(高级加密标准)、RSA等,这些算法不仅加密整个文件,而且采用多轮迭代和密钥扩展,提供了更强的安全性。同时,为了增加破解难度,还会结合使用对称加密和非对称...

    js-java-aes.zip

    AES是一种广泛应用的对称加密标准,其优点在于加密速度快且安全性高。它通过固定的块大小(128位)和可变的密钥长度(128、192或256位)来工作,确保了数据的加密强度。在"js-java-aes.zip"中,我们可以看到两个主要...

    AES|RSA加密

    AESTest.java文件则可能包含AES加密和解密的函数,可能支持ECB(电子密码本)、CBC(链式模式)、CFB(密文反馈模式)或OFB(输出反馈模式)等不同工作模式。 在实际应用中,为了提高安全性和灵活性,常常会结合...

    基于Java实现的加解密方法(DES、3DES、AES)以及五种分组密码工作模式

    本教程主要探讨了如何使用Java编程语言实现DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)这三种常见的对称加密算法,并且详细讲解了五种分组密码的工作模式。...

    AES&RSA;加解密程序(java小白写的)

    在文件名"AES&RSA"中,很可能包含的是实现了AES和RSA算法的Java源代码文件。通常,这样的程序会包括创建密钥对(RSA)、使用AES进行数据加密、使用RSA加密AES密钥、然后将加密后的数据和密钥发送给接收方,接收方再...

    Java实现文件的RSA和DES加密

    Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...

    RSA和AES混合加密demo

    2. **AES加密库**:可能包含了用于执行AES加密的库文件,如OpenSSL或PyCrypto等。 3. **混合加密示例代码**:演示如何使用编程语言(如Python、Java或C++)将RSA和AES结合,实现数据的加密和解密过程。 4. **测试...

    AES文本文件加密解密程序

    8. **程序实现**:AES加密解密程序可能是用某种编程语言(如C++、Python、Java等)实现的,它实现了AES的算法逻辑,并提供了用户友好的接口,让用户能够方便地对文本文件进行加密和解密操作。 9. **安全存储**:...

    使用java实现对文件的加密(java十大经典案例)

    在Java编程语言中,文件加密是一项重要的安全技术,主要用于保护数据免受未经授权的访问或篡改。本案例探讨了如何使用Java实现文件的加密,它属于Java开发中的十大经典应用场景之一。下面,我们将深入讲解这一过程,...

    aes-jni-java和c互加解密

    本文将详细探讨"android aes-jni Java和C互加解密"这个主题,它涉及到Android平台上的JNI(Java Native Interface)技术以及AES加密在Java和C语言之间的实现。 首先,AES是一种块密码,它对128位的数据进行加密,...

    Android RSA AES 加密库

    AES的工作模式包括ECB(电子密码本)、CBC(密文链接)、CFB(密文反馈)、OFB(输出反馈)等,其中CBC模式在Android中常用,它通过前一个块的密文与当前明文异或后进行加密,增强了安全性。 **3. Android JNI实现*...

Global site tag (gtag.js) - Google Analytics