`

java nio应用 aes字符串加密与解密

    博客分类:
  • java
阅读更多
import java.io.IOException;
import java.nio.ByteBuffer;
import java.security.GeneralSecurityException;
import java.security.SecureRandom;

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

public class AESTest {

public static void main(String args[]) {
try {

KeyGenerator keygen = KeyGenerator.getInstance("AES");
SecureRandom random = new SecureRandom();
keygen.init(random);
SecretKey key = keygen.generateKey();
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
String str="原始数据";
            System.out.println("加密前数据:"+str);
ByteBuffer in = ByteBuffer.wrap(str.getBytes());
ByteBuffer dec = crypt(in, cipher);
dec.position(0);
cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, key);
decrypt(dec, cipher);

} catch (Exception e) {
e.printStackTrace();
}
}

//加密方法
public static ByteBuffer crypt(ByteBuffer in, Cipher cipher)
throws IOException, GeneralSecurityException {
int blockSize = cipher.getBlockSize();
int outputSize = cipher.getOutputSize(blockSize);
byte[] outBytes = new byte[outputSize];
in.position(0);
ByteBuffer out = null;

outBytes = cipher.doFinal(in.array());
out = ByteBuffer.wrap(outBytes);

System.out.println("加密数据:" + new String(out.array()));
return out;
}

//解密方法
public static void decrypt(ByteBuffer in, Cipher cipher)
throws IOException, GeneralSecurityException {
int blockSize = cipher.getBlockSize();
int outputSize = cipher.getOutputSize(blockSize);
byte[] outBytes = new byte[outputSize];
in.position(0);
ByteBuffer out = null;

outBytes = cipher.doFinal(in.array());
out = ByteBuffer.wrap(outBytes);

System.out.println("解密后数据:" + new String(out.array()));
}

}
分享到:
评论

相关推荐

    Java实现用AES+des对文件加密解密Java实现用AES+des对文件加密解密

    总的来说,Java的`javax.crypto`包提供了强大的加密能力,可以轻松实现AES和DES加密解密。在实际应用中,根据项目需求选择合适的加密算法,并确保遵循最佳实践,如使用足够长度的密钥,避免明文存储密钥,以及定期...

    java实现字符串处理组件-源代码

    3. **字符串加密**: Java提供了`javax.crypto`包用于加密和解密操作。该组件可能实现了常见的加密算法,如AES(高级加密标准)、DES(数据加密标准)或者MD5(消息摘要算法5)。加密功能可以帮助保护敏感信息,...

    PHP和JAVA AES交互

    以下是一个Java AES加密和解密的示例: ```java import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; ...

    java加密文件

    在加密和解密过程中,通常需要将二进制数据转换为字符串(编码)以便于存储和传输,再将字符串还原为二进制数据(解码)。Java提供了多种编码方式,如Base64,它可以将二进制数据编码为ASCII字符串,方便在文本环境...

    java下载m3u8视频,解密并合并ts(三)

    在本教程中,我们将深入探讨如何使用Java来下载m3u8格式的视频,解密其包含的TS...这个过程涉及网络编程、文件操作、加密解密以及可能的视频处理,是Java开发中相对复杂的一个任务,需要对相关技术有深入的理解。

    文件加密源代码

    8. **安全编码实践**:在处理加密时,要遵循安全编码的最佳实践,比如避免硬编码密钥,使用安全的字符串比较,以及及时清理敏感数据等。 9. **错误处理**:在加密和解密过程中,可能会遇到各种异常,如密钥不匹配、...

    封装java常用工具的类

    常见的加密算法如AES、DES、RSA等可以在Java中实现,用于数据加密和解密。 6. **时间类**:Java 8引入了新的日期和时间API(java.time包),它提供了更直观、更易于使用的日期、时间、时区处理功能,替代了之前的...

    javautil工具类大全

    Java的`javax.crypto`包提供了加密和解密功能,如AES、RSA等算法。 16. **签名与校验码**: 数字签名用于验证数据的完整性和来源,如SHA哈希和RSA签名。校验码如CRC、MD5或SHA用于检测数据传输过程中的错误。 17...

    aesFile.zip

    综上所述,"aesFile.zip"可能包含了一个Java程序,用于实现AES加密功能,可能包括了文件读写、密钥生成、加密解密流程以及与AES相关的类和方法的使用。这个程序能够帮助我们在工作中对文件进行安全的加密,保护敏感...

    java常用工具类——个人总结

    - `javax.crypto` 包提供了加密和解密功能,如`Cipher`类可以实现AES、DES等加密算法。 2. **上传工具类**: - `java.io` 和 `java.nio` 包下的类,如`FileInputStream`、`FileOutputStream`、`...

    Base64批量加密工具

    3. **文件读写**:在批量加密文件时,我们需要使用`java.io`包中的类,如`FileInputStream`和`FileOutputStream`,来读取原始文件并写入加密后的Base64字符串到新文件中。 4. **异常处理**:在处理文件时,必须考虑...

    java安全

    同时,`java.nio.charset`包提供了多种字符编码,用于处理字符串和字节流之间的转换。 5. **异常处理**:在处理安全问题时,异常处理是不可或缺的一部分。Java的`try-catch-finally`语句可以捕获和处理可能出现的...

    java开发通用帮助类

    6. **加密解密**:提供加密和解密算法,如MD5、SHA、AES等,确保数据的安全性。 7. **异常处理**:提供一些通用的异常处理方法,如检查空值、抛出自定义异常等,以保持代码的整洁和一致性。 8. **线程与并发**:...

    java编程语言的知识结构_副本_76941.pdf

    17. **编码与加解密**:Base64用于编码,MD5用于消息摘要,对称加密如AES,非对称加密如RSA,为数据传输提供安全性。 18. **测试与日志**:JUnit用于单元测试,log4j等工具用于记录程序运行日志。 19. **IDE**:...

    RC5-java:RC5 密码学

    Java作为一种广泛应用的编程语言,提供了实现RC5算法的API,使得开发者能够方便地在Java环境中处理加密和解密任务。 在Java中实现RC5加密,主要涉及以下知识点: 1. **Java Cryptography Architecture (JCA)**:...

    得到缓冲区的密码的例子

    10. **加密解密算法**:获取密码可能涉及到解密过程,常见的加密算法有AES(高级加密标准)、DES(数据加密标准)和RSA(公钥加密技术)。理解这些算法的原理和使用方式对于正确操作缓冲区中的密码至关重要。 以上...

    android_toolbox:各种工具类

    - 工具类可能包含日期时间格式化、字符串处理、数字转换等,如使用`java.text.SimpleDateFormat`进行日期格式化,`java.util.regex.Pattern`进行正则表达式匹配等。 5. **UI辅助** - 对于UI组件的操作,如设置...

Global site tag (gtag.js) - Google Analytics