21xrx.com
2024-11-03 21:40:31 Sunday
登录
文章检索 我的文章 写文章
Java加密算法代码——实现数据安全保护
2023-06-14 15:31:00 深夜i     --     --
Java加密算法 对称加密 非对称加密 摘要算法

数据安全一直是互联网发展过程中需要重视的问题,为确保敏感数据的安全,加密算法在信息安全中得到广泛应用。Java加密算法的实现可以保证数据的安全性。本文将分享Java中常用的几种加密算法,并提供相应代码案例。

1. 对称加密算法

对称加密算法是常用的单钥加密算法,加密和解密使用的是同一密钥。Java中常用的对称加密算法包括DES、3DES、AES等,其中AES是目前最常用的对称加密算法。下面是AES加密/解密的代码案例:


//加密

public static String aesEncrypt(String str, String key) throws Exception {

  Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); //算法/模式/补码方式

  SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");

  cipher.init(Cipher.ENCRYPT_MODE, keySpec);

  byte[] encryptedBytes = cipher.doFinal(str.getBytes());

  return new BASE64Encoder().encode(encryptedBytes);

}

//解密

public static String aesDecrypt(String str, String key) throws Exception {

  Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

  SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");

  cipher.init(Cipher.DECRYPT_MODE, keySpec);

  byte[] encryptedBytes = new BASE64Decoder().decodeBuffer(str);

  byte[] decryptedBytes = cipher.doFinal(encryptedBytes);

  return new String(decryptedBytes);

}

2. 非对称加密算法

与对称加密算法不同,非对称加密算法使用一对密钥,分别称为公钥和私钥。公钥用于加密数据,私钥用于解密数据。Java中常用的非对称加密算法包括RSA、DSA等。下面是RSA加密/解密的代码案例:


//生成密钥对

public static Map genKeyPair() throws Exception {

  KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");

  keyPairGen.initialize(1024);

  KeyPair keyPair = keyPairGen.generateKeyPair();

  

  RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();

  RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();

  

  Map keyMap = new HashMap ();

  keyMap.put("publicKey", publicKey);

  keyMap.put("privateKey", privateKey);

  return keyMap;

}

//加密

public static byte[] rsaEncrypt(byte[] data, RSAPublicKey publicKey) throws Exception {

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

  cipher.init(Cipher.ENCRYPT_MODE, publicKey);

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

  return encryptedBytes;

}

//解密

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

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

  cipher.init(Cipher.DECRYPT_MODE, privateKey);

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

  return decryptedBytes;

}

3. 摘要算法

摘要算法是一种单向的加密算法,它通过把明文信息转换成一段固定长度的密文来保证数据的完整性。Java中常用的摘要算法包括SHA-1、MD5等。下面是MD5摘要的代码案例:


//生成MD5摘要

public static String genMD5(String str) {

  StringBuffer sb = new StringBuffer();

  try {

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

    byte[] bytes = md.digest(str.getBytes());

    for (int i = 0; i < bytes.length; i++) {

      String hex = Integer.toHexString(bytes[i] & 0xFF);

      if (hex.length() == 1) {

        sb.append("0");

      }

      sb.append(hex);

    }

  } catch (Exception e) {

    e.printStackTrace();

  }

  return sb.toString();

}

本文介绍了Java中常用的几种加密算法,并提供了相应的代码案例。通过对加密算法的实现,可以保证数据的安全性,有效地防范各种数据安全威胁。

  
  

评论区

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