常见的Java加密算法有哪些?

  • Post category:Java

常见的Java加密算法有如下几种:

  1. 对称加密算法:在对称加密算法中,使用同一个密钥进行加密和解密。常见的对称加密算法有DES、3DES、AES等。

  2. 非对称加密算法:非对称加密算法中,使用公钥进行加密,使用私钥进行解密,或者使用私钥进行加密,使用公钥进行解密。常见的非对称加密算法有RSA、ECC等。

  3. 消息摘要算法:在消息摘要算法中,将任意长度的消息转换为固定长度的摘要(或者叫做哈希值),常见的消息摘要算法有MD5、SHA-1、SHA-256等。

下面我将简要介绍一下Java中如何使用这些常见的加密算法。

  1. 对称加密算法

(1)使用DES算法进行加密和解密

以下是使用DES算法进行加密的示例代码:

public static byte[] encrypt(String content, String key) {
    try {
        SecretKey secretKey = new SecretKeySpec(key.getBytes(), "DES");
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] encryptedBytes = cipher.doFinal(content.getBytes());
        return encryptedBytes;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

以下是使用DES算法进行解密的示例代码:

public static String decrypt(byte[] encryptedBytes, String key) {
    try {
        SecretKey secretKey = new SecretKeySpec(key.getBytes(), "DES");
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
        return new String(decryptedBytes);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

(2)使用AES算法进行加密和解密

以下是使用AES算法进行加密的示例代码:

public static byte[] encrypt(String content, String key) {
    try {
        SecretKey secretKey = new SecretKeySpec(key.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] encryptedBytes = cipher.doFinal(content.getBytes());
        return encryptedBytes;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

以下是使用AES算法进行解密的示例代码:

public static String decrypt(byte[] encryptedBytes, String key) {
    try {
        SecretKey secretKey = new SecretKeySpec(key.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
        return new String(decryptedBytes);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
  1. 非对称加密算法

(1)使用RSA算法进行加密和解密

以下是使用RSA算法进行加密的示例代码:

public static byte[] encrypt(String content, PublicKey publicKey) {
    try {
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encryptedBytes = cipher.doFinal(content.getBytes());
        return encryptedBytes;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

以下是使用RSA算法进行解密的示例代码:

public static String decrypt(byte[] encryptedBytes, PrivateKey privateKey) {
    try {
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
        return new String(decryptedBytes);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
  1. 消息摘要算法

(1)使用MD5算法生成摘要

以下是使用MD5算法生成摘要的示例代码:

public static String md5(String content) {
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] bytes = md.digest(content.getBytes());
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(Integer.toHexString((b & 0xff) | 0x100).substring(1, 3));
        }
        return sb.toString();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

(2)使用SHA-256算法生成摘要

以下是使用SHA-256算法生成摘要的示例代码:

public static String sha256(String content) {
    try {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        byte[] bytes = md.digest(content.getBytes());
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

以上是对Java中常见的加密算法的使用攻略,包含了对如何使用对称加密算法、非对称加密算法以及消息摘要算法进行加密和解密的详细说明,同时还给出了对每个算法的具体实现,希望能对您有所帮助。