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

Java中的加密和解密函数及其用法

发布时间:2023-06-06 05:27:46

Java中的加密和解密函数主要用于保护敏感数据,在网络传输和存储过程中进行加密和解密操作,确保数据安全。

Java中常用的加密算法有MD5、SHA、AES等,下面就介绍一下Java中常用的加密和解密函数及其用法。

1. MD5加密和解密函数

MD5(Message Digest algorithm 5)是一种哈希加密算法,它将任意长度的二进制串(文本、图片、视频等)映射成一个128-bit的哈希值。MD5加密具有不可逆性,即无法从MD5的结果反推出原始数据。

在Java中,MD5加密和解密可以通过MessageDigest类来实现。

//MD5加密

public static String md5Encrypt(String str){

    try {

        MessageDigest md = MessageDigest.getInstance("MD5");

        md.update(str.getBytes());

        byte[] b = md.digest();

        int i;

        StringBuilder sb = new StringBuilder("");

        for (byte aB : b) {

            i = aB;

            if (i < 0)

                i += 256;

            if (i < 16)

                sb.append("0");

            sb.append(Integer.toHexString(i));

        }

        return sb.toString();

    } catch (NoSuchAlgorithmException e) {

        e.printStackTrace();

        return "";

    }

}

//调用MD5加密

String md5Result = md5Encrypt("123456");

//MD5解密

//由于MD5是单向的,无法进行解密

2. SHA加密和解密函数

SHA(Secure Hash Algorithm)是一种可靠的信息加密算法,它可以将数据以512位为单位进行分组,并对每个512位的数据分组进行消息摘要。SHA加密也是一种哈希函数,可以将任意大小的消息转换为一个大小固定的消息摘要。

在Java中,SHA加密和解密也可以通过MessageDigest类来实现。

//SHA加密

public static String shaEncrypt(String str) {

    try {

        MessageDigest sha = MessageDigest.getInstance("SHA");

        byte[] b = sha.digest(str.getBytes());

        StringBuilder sb = new StringBuilder();

        for (byte aB : b) {

            String hex = Integer.toHexString(aB & 0xFF);

            if (hex.length() == 1) {

                sb.append("0");

            }

            sb.append(hex);

        }

        return sb.toString();

    } catch (NoSuchAlgorithmException e) {

        e.printStackTrace();

        return "";

    }

}

//调用SHA加密

String shaResult = shaEncrypt("123456");

//SHA解密

//同样由于SHA也是单向的,无法进行解密

3. AES加密和解密函数

AES(Advanced Encryption Standard)是一种可靠的对称加密算法,它可以将明文加密成密文,然后通过相同的密钥将密文还原成明文。AES加密和解密中使用同一个密钥,因此保密性更强。

在Java中,可以使用javax.crypto包中的Cipher类来实现AES加密和解密。

//AES加密

public static String aesEncrypt(String str, String key) throws Exception {

    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");

    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);

    byte[] b = cipher.doFinal(str.getBytes());

    return Base64.getEncoder().encodeToString(b);

}

//调用AES加密

String key = "1234567890123456";

String aesResult = aesEncrypt("hello world", key);

//AES解密

public static String aesDecrypt(String str, String key) throws Exception {

    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");

    cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);

    byte[] b = Base64.getDecoder().decode(str.getBytes());

    byte[] result = cipher.doFinal(b);

    return new String(result);

}

//调用AES解密

String aesDecryptResult = aesDecrypt(aesResult, key);

以上就是Java中常用的加密和解密函数及其用法,有了加密和解密函数,我们就可以保护我们的数据安全了。