21xrx.com
2024-09-20 08:16:14 Friday
登录
文章检索 我的文章 写文章
【Java加密解密算法】:实现数据安全传输
2023-06-16 09:52:06 深夜i     --     --
Java加密解密 DES加密解密 RSA加密解密 MD5加密算法

在现代互联网时代,数据的安全性越来越受到重视,因此加密和解密算法成为了数据传输和存储中不可或缺的一部分。在Java中,也有许多加密解密算法的实现方式。下面,我们将简单介绍几种常见的Java加密解密算法。

1. DES加密解密算法

DES即数据加密标准(Data Encryption Standard),是一种对称加密算法。在Java中实现DES加密解密算法,需要用到javax.crypto包。下面是一个简单的DES加密解密实现代码:


import javax.crypto.Cipher;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

public class DESUtil {

  public static byte[] desEncrypt(byte[] source, byte[] key) throws Exception {

    // key转换

    DESKeySpec desKeySpec = new DESKeySpec(key);

    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

    SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

    // 加密对象

    Cipher cipher = Cipher.getInstance("DES");

    cipher.init(Cipher.ENCRYPT_MODE, secretKey);

    // 加密

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

    return result;

  }

  public static byte[] desDecrypt(byte[] data, byte[] key) throws Exception {

    // key转换

    DESKeySpec desKeySpec = new DESKeySpec(key);

    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

    SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

    // 解密对象

    Cipher cipher = Cipher.getInstance("DES");

    cipher.init(Cipher.DECRYPT_MODE, secretKey);

    // 解密

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

    return result;

  }

}

2. RSA加密解密算法

RSA加密算法是公钥加密算法,它可以在不提前共享密钥的情况下加密数据。在Java中实现RSA加密解密算法,同样需要用到javax.crypto包。下面是一个简单的RSA加密解密实现代码:


import javax.crypto.Cipher;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.PrivateKey;

import java.security.PublicKey;

public class RSAUtil {

  private static final String RSA_ALGORITHM = "RSA";

  public static byte[] rsaEncrypt(byte[] source, PublicKey publicKey) throws Exception {

    // 初始化加密对象

    Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);

    cipher.init(Cipher.ENCRYPT_MODE, publicKey);

    // 加密

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

    return result;

  }

  public static byte[] rsaDecrypt(byte[] data, PrivateKey privateKey) throws Exception {

    // 初始化解密对象

    Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);

    cipher.init(Cipher.DECRYPT_MODE, privateKey);

    // 解密

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

    return result;

  }

  public static KeyPair generateKeypair() throws Exception {

    // 生成密钥对

    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA_ALGORITHM);

    keyPairGenerator.initialize(2048);

    KeyPair keyPair = keyPairGenerator.generateKeyPair();

    return keyPair;

  }

}

3. MD5加密算法

MD5是一种常用的哈希加密算法,可以将任意长度的输入信息压缩成一个128位的输出值。在Java中实现MD5加密算法,可以直接使用Java自带的MessageDigest类。下面是一个简单的MD5加密实现代码:


import java.security.MessageDigest;

public class MD5Util {

  public static String md5(String source) throws Exception {

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

    byte[] bytes = md5.digest(source.getBytes("UTF-8"));

    StringBuilder builder = new StringBuilder();

    for (byte b : bytes) {

      builder.append(Integer.toHexString((b >> 4) & 0x0F));

      builder.append(Integer.toHexString(b & 0x0F));

    }

    return builder.toString();

  }

}

以上就是三种常见的Java加密解密算法的实现方式和示例代码。在实际应用中,我们可以根据具体业务需求选择合适的加密解密算法来保障数据的安全性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章