当前位置:首页 > Java

java 如何加密

2026-03-03 05:05:59Java

加密方法概述

Java提供了多种加密方式,包括对称加密、非对称加密、哈希算法等。常用的加密工具类位于javax.cryptojava.security包中。

对称加密(AES示例)

对称加密使用相同的密钥进行加密和解密。AES(Advanced Encryption Standard)是常用的对称加密算法。

生成密钥

KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(256); // 密钥长度(128/192/256)
SecretKey secretKey = keyGenerator.generateKey();

加密与解密

java 如何加密

Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal("明文数据".getBytes());

cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedData = cipher.doFinal(encryptedData);

非对称加密(RSA示例)

非对称加密使用公钥加密、私钥解密。RSA是典型的非对称加密算法。

生成密钥对

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048); // 密钥长度
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();

加密与解密

java 如何加密

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal("明文数据".getBytes());

cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);

哈希算法(SHA-256示例)

哈希算法用于生成数据的唯一摘要,不可逆。常用于密码存储或数据完整性校验。

计算哈希值

MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hashBytes = digest.digest("原始数据".getBytes());
String hexHash = DatatypeConverter.printHexBinary(hashBytes);

使用HTTPS传输加密

对于网络传输,可通过SSL/TLS(如HTTPS)实现加密。Java中需配置密钥库和信任库:

System.setProperty("javax.net.ssl.keyStore", "path/to/keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "password");

注意事项

  • 密钥管理:避免硬编码密钥,推荐使用密钥管理系统(如AWS KMS)。
  • 算法选择:优先选择AES-256、RSA-2048等安全算法,避免DES等弱加密。
  • 异常处理:捕获NoSuchAlgorithmExceptionInvalidKeyException等异常。

通过上述方法,可灵活实现Java中的各类加密需求。

标签: java
分享给朋友:

相关文章

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Sys…

如何安装java运行环境

如何安装java运行环境

下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面,选择适合操作系统的JDK版本进行下载。Windows用户通常选择.exe安装包,macOS用户选择.dmg,Linu…

java如何连接mysql数据库

java如何连接mysql数据库

连接 MySQL 数据库的步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,可以在 pom.xml 中添加以下依赖: <dependency…

java如何实现多继承

java如何实现多继承

在Java中,由于语言设计本身不支持多继承(即一个类不能直接继承多个父类),但可以通过以下方式间接实现类似多继承的效果: 使用接口实现多继承 接口允许一个类实现多个接口,从而继承多个抽象行为。接口中…

java如何入门

java如何入门

学习基础语法 从Java的基础语法开始,包括变量、数据类型、运算符、控制结构(if-else、for循环、while循环)等。可以通过官方文档或入门教程学习。 安装开发环境 下载并安装JDK(…

如何系统的学习java

如何系统的学习java

学习Java的基础知识 Java的基础知识包括语法、数据类型、变量、运算符、控制流语句等。可以通过官方文档或入门书籍如《Java核心技术》来掌握这些内容。编写简单的程序练习基础语法,例如打印“Hell…