21xrx.com
2025-03-29 05:39:47 Saturday
文章检索 我的文章 写文章
我在日常Java开发中常常会用到各种加密方式
2023-06-15 00:51:24 深夜i     10     0

我在日常Java开发中常常会用到各种加密方式,下面介绍几种比较常用的加密方式。

1. MD5加密

MD5是一种哈希算法,将任意长度的信息压缩成一个128位的哈希值。在Java中,可以通过java.security包中的MessageDigest类来实现MD5加密。

下面是一个简单的MD5加密代码示例:

import java.security.MessageDigest;
public class MD5Util {
  public static String encrypt(String srcStr) {
    try {
      MessageDigest md = MessageDigest.getInstance("MD5");
      md.update(srcStr.getBytes());
      byte[] mdBytes = md.digest();
      StringBuilder sb = new StringBuilder();
      for (byte mdByte : mdBytes) {
        int val = ((int) mdByte) & 0xff;
        if (val < 16) {
          sb.append("0");
        }
        sb.append(Integer.toHexString(val));
      }
      return sb.toString();
    } catch (Exception e)
      return null;
    
  }
}

2. DES加密

DES是一种对称加密算法,它将明文加密成密文,再将密文解密成明文。在Java中,可以通过javax.crypto包中的Cipher类来实现DES加密。

下面是一个简单的DES加密代码示例:

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class DESUtil {
  private static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5Padding";
  public static byte[] generateKey() throws Exception {
    KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
    keyGenerator.init(56);
    SecretKey secretKey = keyGenerator.generateKey();
    return secretKey.getEncoded();
  }
  public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
    SecretKey secretKey = new SecretKeySpec(key, "DES");
    Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
    cipher.init(Cipher.ENCRYPT_MODE, secretKey);
    return cipher.doFinal(data);
  }
  public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
    SecretKey secretKey = new SecretKeySpec(key, "DES");
    Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
    cipher.init(Cipher.DECRYPT_MODE, secretKey);
    return cipher.doFinal(data);
  }
}

3. RSA加密

RSA是一种非对称加密算法,它使用公钥加密、私钥解密的方式来保护数据安全。在Java中,可以通过java.security包中的KeyPairGenerator类来实现RSA加密。

下面是一个简单的RSA加密代码示例:

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
public class RSAUtil {
  private static final String CIPHER_ALGORITHM = "RSA/ECB/PKCS1Padding";
  private static final int KEY_SIZE = 1024;
  public static KeyPair generateKeyPair() throws Exception {
    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
    keyPairGenerator.initialize(KEY_SIZE);
    return keyPairGenerator.generateKeyPair();
  }
  public static byte[] encrypt(byte[] data, PublicKey publicKey) throws Exception {
    Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
    cipher.init(Cipher.ENCRYPT_MODE, publicKey);
    return cipher.doFinal(data);
  }
  public static byte[] decrypt(byte[] data, PrivateKey privateKey) throws Exception {
    Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
    cipher.init(Cipher.DECRYPT_MODE, privateKey);
    return cipher.doFinal(data);
  }
}

总结:

MD5、DES、RSA都是在Java中常用的加密方式。MD5是一种哈希算法,可用于对数据进行完整性校验;DES是一种对称加密算法,用于保护数据的机密性;RSA是一种非对称加密算法,可用于实现数字签名、数据加密等功能。

  
  

评论区