21xrx.com
2024-12-23 04:22:42 Monday
登录
文章检索 我的文章 写文章
Java中常用的加密方式及其实现方式
2023-06-12 03:28:22 深夜i     --     --
Java加密 对称加密 非对称加密 哈希加密

Java是一种广泛使用的编程语言,它不仅在应用程序中广泛使用,而且还很适合安全性要求很高的系统。在Java中,有多种加密方式可供选择。这篇文章将介绍常见的加密方式及其实现方式。

1. 对称加密方式

对称加密是指使用同一个密钥进行加密和解密的加密方式。因为密钥是相同的,所以该方法通常比其他加密方式更快速和高效。

Java中实现对称加密有多种方法。其中最常见的是使用JCE提供的Cipher类和SecretKey类来实现。以下是一个简单的使用JCE实现对称加密的示例:


import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

public class SymmetricEncryption {

  public static String encrypt(String message, String key) throws Exception {

    SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

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

    cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

    byte[] encrypted = cipher.doFinal(message.getBytes());

    return new String(encrypted, "UTF-8");

  }

  public static String decrypt(String message, String key) throws Exception {

    SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

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

    cipher.init(Cipher.DECRYPT_MODE, skeySpec);

    byte[] original = cipher.doFinal(message.getBytes());

    return new String(original, "UTF-8");

  }

}

2. 非对称加密方式

非对称加密是指使用不同的密钥进行加密和解密的加密方式。这通常包括一个公钥用于加密数据,和一个私钥用于解密数据。

Java中实现非对称加密的方法也有很多,其中最常用的是使用javax.crypto包中的KeyPairGenerator和Cipher类来实现。下面是一个简单的使用JCE实现非对称加密的示例:


import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.PrivateKey;

import java.security.PublicKey;

import javax.crypto.Cipher;

public class AsymmetricEncryption {

  public static byte[] encrypt(String message, PublicKey key) throws Exception {

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

    cipher.init(Cipher.ENCRYPT_MODE, key);

    return cipher.doFinal(message.getBytes());

  }

  public static String decrypt(byte[] message, PrivateKey key) throws Exception {

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

    cipher.init(Cipher.DECRYPT_MODE, key);

    return new String(cipher.doFinal(message));

  }

  public static KeyPair generateKeyPair() throws Exception {

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

    keyGen.initialize(2048);

    return keyGen.generateKeyPair();

  }

}

3. 哈希加密方式

哈希加密是指使用哈希算法对数据进行转换的加密方式。通常,哈希算法将一个任意大小的数据转换为一个固定大小的数据块,称为哈希值或消息摘要。

Java中实现哈希加密的方法也有很多。最常用的是使用MessageDigest类来实现。下面是一个简单的使用MessageDigest类实现哈希加密的示例:


import java.security.MessageDigest;

public class HashEncryption {

  public static String hash(String message) throws Exception {

    MessageDigest md = MessageDigest.getInstance("SHA-256");

    byte[] hash = md.digest(message.getBytes("UTF-8"));

    StringBuffer hexString = new StringBuffer();

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

      String hex = Integer.toHexString(0xff & hash[i]);

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

        hexString.append('0');

      }

      hexString.append(hex);

    }

    return hexString.toString();

  }

}

  
  

评论区

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