简单的一个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);
}
}
分享到:
相关推荐
在IT行业中,安全是至关...以上就是关于“java使用AES加密/解密文件”的详细说明,涵盖了生成密钥、加密文件以及解密文件的核心步骤。通过理解这些知识点,开发者可以有效地保护数据的安全,防止未经授权的访问和篡改。
在提供的"demo"文件中,可能包含了具体的项目结构、配置文件、源代码等,这些内容可以帮助进一步理解和实现这个Java前后端通讯AES加密及解密的案例。实际操作时,需要根据文件内容进行相应的集成和调试。
### 密码学AES算法(JAVA版本) #### 知识点概述 1. **AES算法简介**:高级加密标准(Advanced Encryption Standard,简称AES),是一种对称加密算法,被广泛应用于数据加密领域。 2. **Java实现AES算法**:通过...
综上所述,通过Java调用DLL实现AES文件加密,结合查表法,能够在保持安全性的同时提高加密效率。这是一种有效的跨语言协作策略,对于需要高效处理大量数据的场景尤为适用。在实际项目中,可以根据具体需求进行调整和...
然而,标准的Java Development Kit(JDK)并不直接提供所有可能的AES加密模式和参数,这可能导致在某些特定项目中遇到兼容性问题。 标题"aes对称加密所需jar"暗示了这个问题:项目在尝试使用AES加密时遇到了与JDK不...
AESTestok.java 文件很可能是Java实现AES加密的一个示例代码。 **Delphi的AES加密示例** 在Delphi中,AES加密通常涉及到以下几个步骤: 1. 导入必要的加密库:如`uses ElAES;` 2. 创建AES对象:`var AES: TElAES;...
在给定的压缩文件中,"用java实AES和RSA算法"可能包含这些示例代码和其他相关资源,帮助开发者理解和实现这两种加密算法。通过学习和实践这些代码,开发者可以掌握在Java环境下使用AES和RSA的基本方法,并能够将其...
另外,还提供了一个名为`AesEncryptUtil.java`的后台工具类,它可能是为Java后端设计的,用于解密前端AES加密后的数据。在实际应用中,前端通常只负责加密,而解密则由信任的后端服务器完成,以避免密钥在客户端暴露...
这个程序不需用户输入加密密码,而是自动生成密钥,这通常意味着它使用了KeyGenerator类来生成随机密钥。然而,该程序的限制在于没有提供文件保存位置的选择功能,这意味着加密后的文件会替换原始文件,或者默认保存...
在实际应用中,通常会使用更复杂的加密算法,如AES(高级加密标准)、RSA等,这些算法不仅加密整个文件,而且采用多轮迭代和密钥扩展,提供了更强的安全性。同时,为了增加破解难度,还会结合使用对称加密和非对称...
AES是一种广泛应用的对称加密标准,其优点在于加密速度快且安全性高。它通过固定的块大小(128位)和可变的密钥长度(128、192或256位)来工作,确保了数据的加密强度。在"js-java-aes.zip"中,我们可以看到两个主要...
AESTest.java文件则可能包含AES加密和解密的函数,可能支持ECB(电子密码本)、CBC(链式模式)、CFB(密文反馈模式)或OFB(输出反馈模式)等不同工作模式。 在实际应用中,为了提高安全性和灵活性,常常会结合...
本教程主要探讨了如何使用Java编程语言实现DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)这三种常见的对称加密算法,并且详细讲解了五种分组密码的工作模式。...
在文件名"AES&RSA"中,很可能包含的是实现了AES和RSA算法的Java源代码文件。通常,这样的程序会包括创建密钥对(RSA)、使用AES进行数据加密、使用RSA加密AES密钥、然后将加密后的数据和密钥发送给接收方,接收方再...
Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...
2. **AES加密库**:可能包含了用于执行AES加密的库文件,如OpenSSL或PyCrypto等。 3. **混合加密示例代码**:演示如何使用编程语言(如Python、Java或C++)将RSA和AES结合,实现数据的加密和解密过程。 4. **测试...
8. **程序实现**:AES加密解密程序可能是用某种编程语言(如C++、Python、Java等)实现的,它实现了AES的算法逻辑,并提供了用户友好的接口,让用户能够方便地对文本文件进行加密和解密操作。 9. **安全存储**:...
在Java编程语言中,文件加密是一项重要的安全技术,主要用于保护数据免受未经授权的访问或篡改。本案例探讨了如何使用Java实现文件的加密,它属于Java开发中的十大经典应用场景之一。下面,我们将深入讲解这一过程,...
本文将详细探讨"android aes-jni Java和C互加解密"这个主题,它涉及到Android平台上的JNI(Java Native Interface)技术以及AES加密在Java和C语言之间的实现。 首先,AES是一种块密码,它对128位的数据进行加密,...
AES的工作模式包括ECB(电子密码本)、CBC(密文链接)、CFB(密文反馈)、OFB(输出反馈)等,其中CBC模式在Android中常用,它通过前一个块的密文与当前明文异或后进行加密,增强了安全性。 **3. Android JNI实现*...