0
点赞
收藏
分享

微信扫一扫

java利用字符串实现加密和解密 key

微言记 2024-09-02 阅读 34

Java利用字符串实现加密和解密的简单介绍

在现代信息社会中,信息安全显得尤为重要。为了保护敏感数据,我们需要采取加密措施。Java语言提供了多种方法来实现数据的加密和解密,利用字符串和密钥进行这项操作非常常见。本文将介绍如何在Java中使用字符串实现基本的加密和解密,并给出示例代码。

加密和解密的基本概念

加密是将信息转换成加密形式的过程,只有具备相关密钥的人员才能解密还原信息。对称加密指加密和解密使用相同的密钥,而非对称加密则使用不同的密钥。在本示例中,我们将使用对称加密法,即AES(高级加密标准)。

加密解密流程

加密和解密的基本流程如下:

  1. 输入需要加密的字符串和密钥。
  2. 利用密钥生成加密对象。
  3. 加密字符串并返回密文。
  4. 解密密文以还原原始字符串。

代码示例

以下是一个简单的Java示例,演示如何利用AES算法对字符串进行加密和解密。

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class AESCrypt {
    private static final String ALGORITHM = "AES";

    // 加密方法
    public static String encrypt(String data, String key) throws Exception {
        SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), ALGORITHM);
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] encryptedData = cipher.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(encryptedData);
    }

    // 解密方法
    public static String decrypt(String encryptedData, String key) throws Exception {
        SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), ALGORITHM);
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
        return new String(decryptedData);
    }

    public static void main(String[] args) {
        try {
            String key = "1234567890123456"; // 16字节的密钥
            String originalString = "Hello World";

            // 加密
            String encryptedString = encrypt(originalString, key);
            System.out.println("Encrypted: " + encryptedString);

            // 解密
            String decryptedString = decrypt(encryptedString, key);
            System.out.println("Decrypted: " + decryptedString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

代码解释

  1. 密钥生成:在本示例中,我们使用了一个静态密钥(16个字节)。在实际应用中,密钥应当保存在安全的位置。
  2. 加密过程:使用AES算法对输入字符串进行加密,输出为Base64格式的字符串。
  3. 解密过程:将密文解密回原始字符串。

密钥与加密关系图

关系图如下:

erDiagram
    ENCRYPTION {
        string data
        string key
        string encryptedData
    }
    DECRYPTION {
        string encryptedData
        string key
        string originalData
    }
    ENCRYPTION ||--o{ DECRYPTION : uses

结论

通过以上示例,您可以看到,利用Java实现字符串的加密和解密是一项相对简单的任务。在实际应用中,保护密钥的安全性和选择适当的加密算法尤为重要。这种加密方式可以有效防止敏感信息泄露,提升数据安全性。希望本文能够帮助您了解Java中的加密解密技术及其具体实现。

举报

相关推荐

0 条评论