行业资讯 2025年08月6日
0 收藏 0 点赞 364 浏览 2034 个字
摘要 :

文章目录 1.AES加密和解密 2.加密和解密示例 Java支持许多安全的加密算法,但其中一些算法在安全密集型应用中很脆弱。例如,数据加密标准(DES)加密算法被认为是非常……




  • 1.AES加密和解密
  • 2.加密和解密示例

Java支持许多安全的加密算法,但其中一些算法在安全密集型应用中很脆弱。例如,数据加密标准(DES)加密算法被认为是非常不安全的;使用DES加密的消息已经被暴力破解在一天之内被机器破解,例如电子前沿基金会的(EFF)Deep Crack。

更安全的加密算法是AES – 高级加密标准,这是一种对称加密算法。AES加密被美国用于保护敏感但未分类的材料,因此我们可以说它是足够安全的。

1.AES加密和解密

让我们来看一下这个Java程序中使用AES加密的示例。

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class AES {
  private static SecretKeySpec secretKey;
  private static byte[] key;
  public static void setKey(final String myKey) {
    MessageDigest sha = null;
    try {
      key = myKey.getBytes(\"UTF-8\");
      sha = MessageDigest.getInstance(\"SHA-1\");
      key = sha.digest(key);
      key = Arrays.copyOf(key, 16);
      secretKey = new SecretKeySpec(key, \"AES\");
    } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
      e.printStackTrace();
    }
  }
  public static String encrypt(final String strToEncrypt, final String secret) {
    try {
      setKey(secret);
      Cipher cipher = Cipher.getInstance(\"AES/ECB/PKCS5Padding\");
      cipher.init(Cipher.ENCRYPT_MODE, secretKey);
      return Base64.getEncoder()
        .encodeToString(cipher.doFinal(strToEncrypt.getBytes(\"UTF-8\")));
    } catch (Exception e) {
      System.out.println(\"Error while encrypting: \" + e.toString());
    }
    return null;
  }
  public static String decrypt(final String strToDecrypt, final String secret) {
    try {
      setKey(secret);
      Cipher cipher = Cipher.getInstance(\"AES/ECB/PKCS5PADDING\");
      cipher.init(Cipher.DECRYPT_MODE, secretKey);
      return new String(cipher.doFinal(Base64.getDecoder()
        .decode(strToDecrypt)));
    } catch (Exception e) {
      System.out.println(\"Error while decrypting: \" + e.toString());
    }
    return null;
  }
}

2.加密和解密示例

让我们测试是否能够从加密的字符串中获取解密的字符串。

final String secretKey = \"ssshhhhhhhhhhh!!!!\";
String originalString = \"howtodoinjava.com\";
String encryptedString = AES.encrypt(originalString, secretKey) ;
String decryptedString = AES.decrypt(encryptedString, secretKey) ;
System.out.println(originalString);
System.out.println(encryptedString);
System.out.println(decryptedString);

程序输出:

howtodoinjava.com
Tg2Nn7wUZOQ6Xc+1lenkZTQ9ZDf9a2/RBRiqJBCIX6o=
howtodoinjava.com

请在下方留下您的问题和评论。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9509.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号