当前位置:首页 > Java

java 如何加密

2026-04-09 02:05:56Java

加密方式概述

Java 提供了多种加密方式,包括对称加密、非对称加密、哈希算法等。常见的加密库包括 javax.cryptojava.security

对称加密(AES)

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

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;

public class AESEncryption {
    public static void main(String[] args) throws Exception {
        // 生成密钥
        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
        keyGen.init(128); // 128位密钥
        SecretKey secretKey = keyGen.generateKey();

        // 加密
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        String plainText = "Hello, World!";
        byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
        String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);

        // 解密
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
        String decryptedText = new String(decryptedBytes);

        System.out.println("加密后: " + encryptedText);
        System.out.println("解密后: " + decryptedText);
    }
}

非对称加密(RSA)

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

import javax.crypto.Cipher;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.util.Base64;

public class RSAEncryption {
    public static void main(String[] args) throws Exception {
        // 生成密钥对
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        keyGen.initialize(2048); // 2048位密钥
        KeyPair keyPair = keyGen.generateKeyPair();

        // 加密(使用公钥)
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
        String plainText = "Hello, World!";
        byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
        String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);

        // 解密(使用私钥)
        cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
        byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
        String decryptedText = new String(decryptedBytes);

        System.out.println("加密后: " + encryptedText);
        System.out.println("解密后: " + decryptedText);
    }
}

哈希算法(SHA-256)

哈希算法用于生成数据的唯一摘要,常用于密码存储。

java 如何加密

import java.security.MessageDigest;
import java.util.Base64;

public class SHA256Hash {
    public static void main(String[] args) throws Exception {
        String input = "Hello, World!";
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] hashBytes = digest.digest(input.getBytes());
        String hashText = Base64.getEncoder().encodeToString(hashBytes);

        System.out.println("SHA-256 哈希值: " + hashText);
    }
}

密钥管理与安全建议

  • 对称加密的密钥需安全存储,避免硬编码在代码中。
  • 非对称加密的私钥需严格保护,防止泄露。
  • 哈希算法应结合盐值(Salt)使用,增强安全性。

以上方法涵盖了 Java 中常见的加密技术,可根据实际需求选择合适的方案。

标签: java
分享给朋友:

相关文章

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…

java如何创建包

java如何创建包

创建Java包的步骤 在Java中,包(package)用于组织和管理类文件,避免命名冲突。以下是创建Java包的详细方法: 定义包名 在Java源文件的开头使用package关键字声明包名。包名…

教你如何完全卸载java

教你如何完全卸载java

卸载 Java 的步骤 Windows 系统 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到 Java 相关的条目,通常显示为“Java”或“Java(TM)”。右键点击选择卸载,按照…

java如何取绝对值

java如何取绝对值

取绝对值的方法 在Java中,取绝对值可以通过以下几种方式实现: 使用Math.abs()方法 Math.abs()是Java中最常用的取绝对值方法,适用于多种数据类型: int abso…

java如何

java如何

以下是针对Java常见需求的解决方案整理,以模块化方式呈现: 基础环境配置 下载JDK并配置环境变量,官网提供最新版本。验证安装使用命令 java -version。IDE推荐IntelliJ ID…