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

Java加密函数:MD5、SHA-1、AES等加密方式

发布时间:2023-07-05 20:22:45

Java中提供了多种加密方式,本文将介绍一些常见的加密函数,包括MD5、SHA-1、AES等。

MD5加密是一种常用的加密方式,它使用128位(16字节)的哈希值表示加密后的结果。在Java中,可以使用java.security.MessageDigest类实现MD5加密。以下是一个示例代码:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Example {

    public static void main(String[] args) {
        String data = "Hello, World!";
        String encryptedData = getMD5(data);
        System.out.println("Encrypted Data: " + encryptedData);
    }

    public static String getMD5(String data) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] digest = md.digest(data.getBytes());
            StringBuilder sb = new StringBuilder();
            for (byte b : digest) {
                sb.append(String.format("%02x", b & 0xff));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
}

SHA-1加密是一种更强大的加密方式,它使用160位(20字节)的哈希值表示加密后的结果。在Java中,可以使用上述示例中的MessageDigest类来实现SHA-1加密,只需要将参数改为"SHA-1"即可。

AES加密是一种对称加密算法,它使用相同的密钥进行加密和解密。在Java中,可以使用javax.crypto包下的类来实现AES加密。以下是一个示例代码:

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class AESExample {

    public static void main(String[] args) {
        String data = "Hello, World!";
        String key = "0123456789abcdef";
        
        byte[] encryptedData = encryptAES(data, key);
        System.out.println("Encrypted Data: " + Base64.getEncoder().encodeToString(encryptedData));
        
        String decryptedData = decryptAES(encryptedData, key);
        System.out.println("Decrypted Data: " + decryptedData);
    }

    public static byte[] encryptAES(String data, String key) {
        try {
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
            return cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String decryptAES(byte[] data, String key) {
        try {
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
            cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
            return new String(cipher.doFinal(data), StandardCharsets.UTF_8);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

使用上述示例代码,可以轻松实现MD5、SHA-1和AES加密。需要注意的是,加密算法的选择取决于具体的需求和安全性要求。