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

Java加密和解密函数的常用方法:MD5、SHA1、DES、RSA和AES。

发布时间:2023-08-03 23:03:21

Java中常用的加密和解密方法有MD5、SHA1、DES、RSA和AES。

1. MD5加密和解密:

MD5是一种常用的哈希加密算法,其特点是不可逆,即无法通过加密后的结果还原明文。在Java中,可以使用MessageDigest类实现MD5加密和解密。

- 加密方法:

public static String encryptMD5(String str) throws Exception {
    StringBuffer sb = new StringBuffer();
    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update(str.getBytes());
    byte[] digest = md.digest();
    for (int i = 0; i < digest.length; i++) {
        String hex = Integer.toHexString(digest[i] & 0xFF);
        if (hex.length() < 2) {
            hex = "0" + hex;
        }
        sb.append(hex);
    }
    return sb.toString();
}

- 解密方法:

由于MD5是不可逆的,无法进行解密。

2. SHA1加密和解密:

SHA1也是一种哈希加密算法,其特点与MD5相似。在Java中,可以使用MessageDigest类实现SHA1加密和解密。

- 加密方法:

public static String encryptSHA1(String str) throws Exception {
    StringBuffer sb = new StringBuffer();
    MessageDigest md = MessageDigest.getInstance("SHA-1");
    md.update(str.getBytes());
    byte[] digest = md.digest();
    for (int i = 0; i < digest.length; i++) {
        String hex = Integer.toHexString(digest[i] & 0xFF);
        if (hex.length() < 2) {
            hex = "0" + hex;
        }
        sb.append(hex);
    }
    return sb.toString();
}

- 解密方法:

由于SHA1是不可逆的,无法进行解密。

3. DES加密和解密:

DES是一种对称加密算法,即加密和解密使用相同的密钥。在Java中,可以使用Cipher类实现DES加密和解密。

- 加密方法:

public static String encryptDES(String str, String key) throws Exception {
    Cipher cipher = Cipher.getInstance("DES");
    SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "DES");
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
    byte[] encrypted = cipher.doFinal(str.getBytes());
    return Base64.getEncoder().encodeToString(encrypted);
}

- 解密方法:

public static String decryptDES(String str, String key) throws Exception {
    Cipher cipher = Cipher.getInstance("DES");
    SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "DES");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec);
    byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(str));
    return new String(decrypted);
}

4. RSA加密和解密:

RSA是一种非对称加密算法,即加密和解密使用不同的密钥。在Java中,可以使用KeyPairGenerator类生成密钥对,并使用Cipher类实现RSA加密和解密。

- 加密方法:

public static String encryptRSA(String str, PublicKey publicKey) throws Exception {
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.ENCRYPT_MODE, publicKey);
    byte[] encrypted = cipher.doFinal(str.getBytes());
    return Base64.getEncoder().encodeToString(encrypted);
}

- 解密方法:

public static String decryptRSA(String str, PrivateKey privateKey) throws Exception {
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.DECRYPT_MODE, privateKey);
    byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(str));
    return new String(decrypted);
}

5. AES加密和解密:

AES是一种对称加密算法,其安全性更高于DES。在Java中,可以使用Cipher类实现AES加密和解密。

- 加密方法:

public static String encryptAES(String str, String key) throws Exception {
    Cipher cipher = Cipher.getInstance("AES");
    SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
    byte[] encrypted = cipher.doFinal(str.getBytes());
    return Base64.getEncoder().encodeToString(encrypted);
}

- 解密方法:

public static String decryptAES(String str, String key) throws Exception {
    Cipher cipher = Cipher.getInstance("AES");
    SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec);
    byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(str));
    return new String(decrypted);
}

以上是Java中常用的加密和解密方法,可以根据需求选择适合的加密算法来保护数据的安全性。