21xrx.com
2024-11-22 19:04:41 Friday
登录
文章检索 我的文章 写文章
我在日常Java开发中常常会用到各种加密方式
2023-06-15 00:51:24 深夜i     --     --

我在日常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是一种非对称加密算法,可用于实现数字签名、数据加密等功能。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复