欢迎访问宙启技术站
智能推送

Java中常用的加密和解密函数有哪些?如何使用?

发布时间:2023-05-19 15:58:08

Java中常用的加密和解密函数主要有以下几种:

1. MessageDigest类:这个类提供了一个通用的哈希函数,算法包括MD5和SHA-1等,可以将任意长度的消息转换为一个定长的消息摘要。

2. Cipher类:这个类提供了几乎所有的对称加密算法和部分非对称加密算法的支持,例如DES、AES、RSA等,可以对数据进行加密和解密操作。

3. KeyPairGenerator类:这个类提供了一种生成非对称密钥对的方法,例如RSA算法就是一种非对称加密的算法。

4. KeyAgreement类:这个类提供了一种用于协商密钥的方法,如果两个实体需要使用密钥进行加密和解密,可以使用这个类建立共享密钥。

5. SecureRandom类:这个类提供了一种安全随机数生成器,可以生成高质量的随机数,用于加密操作中的参数和密钥的生成功能。

这些加密和解密函数可以使用Java.security包中的一些类来使用。其中,MessageDigest和Cipher类可以直接使用,而KeyPairGenerator和KeyAgreement类需要根据具体的加密算法进行配置。SecureRandom类可以使用SecureRandom对象来生成随机数。

下面是一个简单的使用示例,使用DES算法对数据进行加密和解密:

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.SecureRandom;

public class DesUtil {
    private static final String KEY_ALGORITHM = "DES";
    private static final int KEY_SIZE = 64;
    private static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5Padding";

    public static void main(String[] args) throws Exception {
        String plainText = "Hello World!";
        byte[] plainBytes = plainText.getBytes();

        // 生成密钥
        KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);
        kg.init(KEY_SIZE, new SecureRandom());
        SecretKey secretKey = kg.generateKey();

        // 加密
        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] encryptedBytes = cipher.doFinal(plainBytes);

        // 解密
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] decryptedBytes = cipher.doFinal(encryptedBytes);

        String decryptedText = new String(decryptedBytes);
        System.out.println("plainText: " + plainText);
        System.out.println("encryptedBytes: " + new String(encryptedBytes));
        System.out.println("decryptedText: " + decryptedText);
    }
}

上面的代码中,首先生成一个64位的DES密钥,并使用ECB模式和PKCS5填充方式对数据进行加密和解密操作。其中,加密和解密时使用的密钥是相同的。在实际应用中,需要根据具体的需求和业务场景选择合适的加密算法和模式。