legongju.com
我们一直在努力
2024-12-23 16:12 | 星期一

Java中如何进行加密和解密操作

在Java中,可以使用javax.crypto包中的类进行加密和解密操作。下面是一个使用AES算法的示例:

  1. 导入所需的库:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
  1. 生成密钥:
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128); // 可以选择128、192或256位密钥长度
SecretKey secretKey = keyGen.generateKey();
  1. 加密方法:
public static String encrypt(String plainText, SecretKey secretKey) throws Exception {
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.ENCRYPT_MODE, secretKey);
    byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
    return Base64.getEncoder().encodeToString(encryptedBytes);
}
  1. 解密方法:
public static String decrypt(String encryptedText, SecretKey secretKey) throws Exception {
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, secretKey);
    byte[] decodedBytes = Base64.getDecoder().decode(encryptedText);
    byte[] decryptedBytes = cipher.doFinal(decodedBytes);
    return new String(decryptedBytes);
}
  1. 使用示例:
public static void main(String[] args) {
    try {
        String plainText = "Hello, World!";
        String encryptedText = encrypt(plainText, secretKey);
        System.out.println("Encrypted Text: " + encryptedText);
        String decryptedText = decrypt(encryptedText, secretKey);
        System.out.println("Decrypted Text: " + decryptedText);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

请注意,为了安全起见,密钥(secretKey)应该妥善保管,不要泄露给未经授权的人员。在实际应用中,可以考虑使用更安全的密钥交换和存储方案,例如使用Java KeyStore系统。此外,加密和解密操作可能会抛出异常,因此需要进行适当的错误处理。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/24776.html

相关推荐

  • java linkedhashset 有啥优缺点

    java linkedhashset 有啥优缺点

    Java中的LinkedHashSet是一个基于哈希表和链表实现的有序的集合(Set)。它继承自HashSet,实现了Set接口。LinkedHashSet的主要优点和缺点如下:
    优点: 保...

  • java linkedhashset 怎么遍历

    java linkedhashset 怎么遍历

    在 Java 中,你可以使用迭代器(Iterator)或者增强型 for 循环来遍历 HashSet。但是,由于 HashSet 是无序的,所以遍历的结果可能与添加时的顺序不同。如果你需...

  • java linkedhashset 和 hashmap 区别

    java linkedhashset 和 hashmap 区别

    Java中的LinkedHashSet和HashMap都是用于存储键值对的数据结构,但它们之间存在一些关键区别: 继承关系: HashMap是Java中的一个核心类,它实现了Map接口。

  • java linkedhashset 适合什么场景

    java linkedhashset 适合什么场景

    Java中的LinkedHashSet是一个哈希表和链表实现的有序的集合(Set)。它继承了HashSet,实现了Set接口。LinkedHashSet适用于以下场景: 需要保持元素插入顺序:Li...

  • Java中如何进行单元测试

    Java中如何进行单元测试

    在Java中进行单元测试,通常使用JUnit框架。以下是一些基本步骤: 添加JUnit依赖:首先,需要在项目中添加JUnit的依赖。如果你使用的是Maven或Gradle等构建工具,...

  • CSS中如何进行响应式图片的处理

    CSS中如何进行响应式图片的处理

    在CSS中,可以使用max-width属性配合百分比或viewport单位来实现响应式图片。这样,图片可以根据浏览器窗口的大小自动调整其尺寸。以下是两种实现方法:
    方...

  • HTML中如何进行SEO优化

    HTML中如何进行SEO优化

    在HTML中进行SEO优化,主要涉及到以下几个方面: 使用合适的标题标签:在HTML中,标题标签用于定义文档的标题,这对于SEO至关重要。标题标签应该准确描述页面内容...

  • iOS开发中如何进行手势识别

    iOS开发中如何进行手势识别

    在iOS开发中,手势识别是通过UIKit框架中的UIGestureRecognizer类及其子类来实现的。以下是实现手势识别的基本步骤: 导入UIKit框架:在你的ViewController文件中...