21xrx.com
2024-12-22 23:28:56 Sunday
登录
文章检索 我的文章 写文章
Java中常用的加密算法及其实现
2023-06-16 10:22:59 深夜i     --     --
Java 加密算法 DES AES RSA

Java是目前最常用的编程语言之一,也是数据安全领域广泛应用的语言。在Java中,加密算法是数据安全应用的基础,它主要是利用数学函数对数据进行处理,使得数据在传输或储存过程中不被非法获取。Java中常用的加密算法有DES、AES、RSA等,下面分别介绍它们的实现方法和关键代码。

一、DES加密算法

1.1 原理简介

DES(Data Encryption Standard),即数据加密标准算法,是一种分组密码算法。分组密码就是把消息分成若干长度相等的数据块,然后对每块进行加密或解密。DES将一段64位明文输入,经过一系列复杂计算后,产生64位密文输出。DES的密钥长度是56位,但可以输入64位的密钥,以每8位进行调整,最后成为56位的密钥。DES加密算法适用于不超过大约2的56次方个信息单位的加密。由于DES算法已经被破解,其安全性得不到保证,现在应用较少。

1.2 实现代码

- DES加密

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

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

    byte[] k = key.getBytes();

    SecretKeySpec sks = new SecretKeySpec(k, "DES");

    cipher.init(Cipher.ENCRYPT_MODE, sks);

    byte[] data = str.getBytes();

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

    return Base64.encodeToString(encryptedData, Base64.DEFAULT);

  }

- DES解密

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

    byte[] encryptedData = Base64.decode(str, Base64.DEFAULT);

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

    byte[] k = key.getBytes();

    SecretKeySpec sks = new SecretKeySpec(k, "DES");

    cipher.init(Cipher.DECRYPT_MODE, sks);

    byte[] decryptedData = cipher.doFinal(encryptedData);

    return new String(decryptedData);

  }

二、AES加密算法

2.1 原理简介

AES(Advanced Encryption Standard),即高级加密标准算法,也是分组密码算法,是DES的替代者,具有更高的安全性。AES将明文分组长度定为128位,密钥长度可以是128、192或256位。由于DES算法的密钥长度过短,安全性较低,故AES被广泛应用。

2.2 实现代码

- AES加密

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

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

    byte[] k = key.getBytes();

    SecretKeySpec sks = new SecretKeySpec(k, "AES");

    cipher.init(Cipher.ENCRYPT_MODE, sks);

    byte[] data = str.getBytes();

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

    return Base64.encodeToString(encryptedData, Base64.DEFAULT);

  }

- AES解密

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

    byte[] encryptedData = Base64.decode(str, Base64.DEFAULT);

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

    byte[] k = key.getBytes();

    SecretKeySpec sks = new SecretKeySpec(k, "AES");

    cipher.init(Cipher.DECRYPT_MODE, sks);

    byte[] decryptedData = cipher.doFinal(encryptedData);

    return new String(decryptedData);

  }

三、RSA加密算法

3.1 原理简介

RSA(Rivest–Shamir–Adleman)是一种非对称加密算法,它是公开密钥加密(PKI)的重要基础,被广泛应用。RSA的安全性依赖于大质数分解的困难性。RSA算法生成一对密钥:公钥和私钥,其中公钥可以公开,私钥需要保密。发送方使用接收方的公钥进行加密,接收方使用自己的私钥进行解密。

3.2 实现代码

- RSA加密

  public static String encryptRSA(String str, PublicKey publicKey) throws Exception {

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

    cipher.init(Cipher.ENCRYPT_MODE, publicKey);

    byte[] data = str.getBytes();

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

    return Base64.encodeToString(encryptedData, Base64.DEFAULT);

  }

- RSA解密

  public static String decryptRSA(String str, PrivateKey privateKey) throws Exception {

    byte[] encryptedData = Base64.decode(str, Base64.DEFAULT);

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

    cipher.init(Cipher.DECRYPT_MODE, privateKey);

    byte[] decryptedData = cipher.doFinal(encryptedData);

    return new String(decryptedData);

  }

四、总结

Java中常用的加密算法有DES、AES、RSA等,每一种加密算法都有其特定的实现方式和代码。在实际应用中,应根据数据安全性要求和数据传输方式等因素,选择最适合的加密算法。加密算法有着很广泛的应用领域,尤其是在互联网领域保护用户数据安全方面具有极为重要的意义。

  
  

评论区

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