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

Java加密解密函数实用手册:MD5,SHA-256,RSA 等

发布时间:2023-05-27 02:25:04

Java加密解密函数是Java编程中非常重要的一部分,用于保护敏感数据和信息的安全性。本文将介绍几种常用的加密解密算法,并提供一些相关的Java函数代码示例,以便读者更好地了解和掌握Java加密解密的实现方式。

1. MD5加密解密算法

MD5是一种不可逆的加密算法,通常用于加密密码、数字签名等数据。MD5算法将任意长度的消息转换为一个128位的散列值,通常表示为32个十六进制字符。

Java中可以使用java.security.MessageDigest类来实现MD5算法。下面是一个示例代码:

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

public class MD5Util {
    public static String generateMD5(String input) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] inputBytes = input.getBytes();
        byte[] mdBytes = md.digest(inputBytes);
        
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < mdBytes.length; i++) {
            sb.append(Integer.toString((mdBytes[i] & 0xff) + 0x100, 16).substring(1));
        }
        
        return sb.toString();
    }
}

2. SHA-256加密解密算法

SHA-256是一种安全散列算法,可用于加密密码、数字签名等数据。SHA-256算法将任意长度的消息转换为一个256位的散列值,通常表示为64个十六进制字符。

Java中可以使用java.security.MessageDigest类来实现SHA-256算法。下面是一个示例代码:

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

public class SHA256Util {
    public static String generateSHA256(String input) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        byte[] inputBytes = input.getBytes();
        byte[] mdBytes = md.digest(inputBytes);

        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < mdBytes.length; i++) {
            sb.append(Integer.toString((mdBytes[i] & 0xff) + 0x100, 16).substring(1));
        }

        return sb.toString();
    }
}

3. RSA加密解密算法

RSA是一种公钥加密算法,常用于加密和签名数据。RSA算法需要一个密钥对,包括一个公钥和一个私钥。公钥可用于加密数据,私钥可用于解密数据或签名数据。

Java中可以使用java.security.KeyPairGenerator类来生成RSA密钥对,使用javax.crypto.Cipher类来加密和解密数据。下面是一个示例代码:

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import javax.crypto.Cipher;

public class RSAUtil {
    public static KeyPair generateKeyPair() throws Exception {
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        keyGen.initialize(2048);
        return keyGen.generateKeyPair();
    }

    public static byte[] encrypt(byte[] data, byte[] publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, getPublicKey(publicKey));
        return cipher.doFinal(data);
    }

    public static byte[] decrypt(byte[] data, byte[] privateKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.DECRYPT_MODE, getPrivateKey(privateKey));
        return cipher.doFinal(data);
    }

    private static RSAPrivateKey getPrivateKey(byte[] keyBytes) throws Exception {
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        return (RSAPrivateKey) keyFactory.generatePrivate(new PKCS8EncodedKeySpec(keyBytes));
    }

    private static RSAPublicKey getPublicKey(byte[] keyBytes) throws Exception {
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        return (RSAPublicKey) keyFactory.generatePublic(new X509EncodedKeySpec(keyBytes));
    }
}

本文介绍了几种常见的加密解密算法,包括MD5、SHA-256和RSA算法,并提供了一些Java函数代码示例。读者可以根据自己的实际需要选择适合自己的加密解密算法,并在Java编程中应用它们,来提高数据和信息的安全性。