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

Java函数库中加密解密相关的函数和使用方法

发布时间:2023-05-22 17:16:57

Java函数库中包含了大量加密解密相关的函数,用于保护敏感数据的安全性,在企业级应用系统中得到了广泛的应用。

一、加密解密算法

常用的加密解密算法包括对称加密、非对称加密和哈希算法。在Java函数库中,提供了众多的算法实现,可以根据应用的需要进行选择。

1. 对称加密算法

对称加密算法是一种加密算法,它使用同一把密钥进行加密和解密。常用的对称加密算法有DES、3DES、AES等。

2. 非对称加密算法

非对称加密算法也称公开密钥加密算法,使用一对密钥进行加密和解密,公钥可以公开,而私钥则需要保密。常用的非对称加密算法有RSA、DSA等。

3. 哈希算法

哈希算法(Hash)是一种将任意长度的信息压缩到一个固定长度的值的函数。常用的哈希算法有MD5、SHA-1、SHA-2等。

二、Java函数库中的加密解密函数

1. MessageDigest

MessageDigest是Java提供的计算哈希值的类,常用的哈希算法有MD5、SHA-1、SHA-2。使用方法如下:

import java.security.MessageDigest;

public class HashUtil {
    public static String getMD5(String str) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] result = md.digest(str.getBytes());
            StringBuilder sb = new StringBuilder();
            for (byte b : result) {
                sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
            }
            return sb.toString();
        } catch (Exception ex) {
            return "";
        }
    }
}

2. SecretKey

SecretKey是Java中对称加密算法的密钥接口,常用的对称加密算法有DES、3DES、AES。使用方法如下:

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

public class SymmetricEncryptionUtil {
    public static SecretKey generateKey() {
        try {
            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            keyGenerator.init(128);
            return keyGenerator.generateKey();
        } catch (NoSuchAlgorithmException ex) {
            return null;
        }
    }
}

3. Cipher

Cipher是Java中加密解密算法的核心类,用于实现数据的加解密和解密操作。使用方法如下:

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

public class SymmetricEncryptionUtil {
    public static byte[] encrypt(byte[] data, SecretKey key) {
        try {
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.ENCRYPT_MODE, key);
            return cipher.doFinal(data);
        } catch (Exception ex) {
            return null;
        }
    }
    
    public static byte[] decrypt(byte[] data, SecretKey key) {
        try {
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.DECRYPT_MODE, key);
            return cipher.doFinal(data);
        } catch (Exception ex) {
            return null;
        }
    }
}

4. KeyPairGenerator

KeyPairGenerator是Java中非对称加密算法的密钥生成器类,常用的非对称加密算法有RSA、DSA。使用方法如下:

import java.security.KeyPair;
import java.security.KeyPairGenerator;

public class AsymmetricEncryptionUtil {
    public static KeyPair generateKeyPair() {
        try {
            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
            keyPairGenerator.initialize(1024);
            return keyPairGenerator.generateKeyPair();
        } catch (NoSuchAlgorithmException ex) {
            return null;
        }  
    }
}

5. Cipher

Cipher是Java中加密解密算法的核心类,用于实现数据的加解密和解密操作。使用方法如下:

import javax.crypto.Cipher;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;

public class AsymmetricEncryptionUtil {
    public static byte[] encrypt(byte[] data, PublicKey publicKey) {
        try {
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.ENCRYPT_MODE, publicKey);
            return cipher.doFinal(data);
        } catch (Exception ex) {
            return null;
        }
    }

    public static byte[] decrypt(byte[] data, PrivateKey privateKey) {
        try {
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE, privateKey);
            return cipher.doFinal(data);
        } catch (Exception ex) {
            return null;
        }
    }
}

三、加密解密实例

下面以AES对称加密算法为例,演示Java函数库中加密解密相关的函数的使用方法。

import javax.crypto.SecretKey;

public class Main {
    public static void main(String[] args) {
        String plainText = "Hello World!";
        SecretKey key = SymmetricEncryptionUtil.generateKey();
        byte[] cipherText = SymmetricEncryptionUtil.encrypt(plainText.getBytes(), key);
        byte[] decryptedText = SymmetricEncryptionUtil.decrypt(cipherText, key);
        String result = new String(decryptedText);
        System.out.println(result);
    }
}

四、总结

Java函数库中加密解密相关的函数非常丰富,可以根据实际需要选择合适的算法和函数实现数据的加解密和解密操作。在应用系统的开发中,确保数据的安全性是非常重要的,加密解密技术可以很好地保障数据的安全,提高系统的可靠性和安全性。