当前位置:首页 > Java

java如何实现加密

2026-03-23 07:45:52Java

Java实现加密的方法

Java提供了多种加密方式,包括对称加密、非对称加密和哈希加密。以下是一些常见的加密实现方法:

java如何实现加密

对称加密(AES)

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

java如何实现加密

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

public class AESEncryption {
    public static SecretKey generateKey() throws Exception {
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(256); // 可以使用128或192位
        return keyGenerator.generateKey();
    }

    public static String encrypt(String plainText, SecretKey secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
        return Base64.getEncoder().encodeToString(encryptedBytes);
    }

    public static String decrypt(String encryptedText, SecretKey secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
        return new String(decryptedBytes);
    }
}

非对称加密(RSA)

非对称加密使用公钥和私钥进行加密和解密。RSA是一种常见的非对称加密算法。

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

public class RSAEncryption {
    public static KeyPair generateKeyPair() throws Exception {
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(2048); // 密钥长度
        return keyPairGenerator.generateKeyPair();
    }

    public static String encrypt(String plainText, java.security.PublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
        return Base64.getEncoder().encodeToString(encryptedBytes);
    }

    public static String decrypt(String encryptedText, java.security.PrivateKey privateKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
        return new String(decryptedBytes);
    }
}

哈希加密(SHA-256)

哈希加密是一种单向加密,通常用于密码存储。SHA-256是一种常用的哈希算法。

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

public class SHA256Encryption {
    public static String hash(String input) throws Exception {
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] hashBytes = digest.digest(input.getBytes());
        return Base64.getEncoder().encodeToString(hashBytes);
    }
}

使用示例

public class Main {
    public static void main(String[] args) throws Exception {
        // AES示例
        SecretKey aesKey = AESEncryption.generateKey();
        String aesEncrypted = AESEncryption.encrypt("Hello World", aesKey);
        String aesDecrypted = AESEncryption.decrypt(aesEncrypted, aesKey);
        System.out.println("AES Decrypted: " + aesDecrypted);

        // RSA示例
        KeyPair rsaKeyPair = RSAEncryption.generateKeyPair();
        String rsaEncrypted = RSAEncryption.encrypt("Hello World", rsaKeyPair.getPublic());
        String rsaDecrypted = RSAEncryption.decrypt(rsaEncrypted, rsaKeyPair.getPrivate());
        System.out.println("RSA Decrypted: " + rsaDecrypted);

        // SHA-256示例
        String shaHash = SHA256Encryption.hash("Hello World");
        System.out.println("SHA-256 Hash: " + shaHash);
    }
}

以上代码展示了如何在Java中实现常见的加密算法。根据具体需求选择合适的加密方式。

分享给朋友:

相关文章

vue如何实现到期提醒

vue如何实现到期提醒

实现思路 在Vue中实现到期提醒功能,可以通过计算日期差、定时检查和通知用户三个核心步骤完成。需要结合Vue的响应式特性和JavaScript的日期处理能力。 计算日期差 使用JavaScr…

vue如何实现增删

vue如何实现增删

使用 Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是具体实现方法: 数据定义与初始化 在 Vue 组件的 data 选项中定义数组来存储需要操作的数据项…

java如何实现多态

java如何实现多态

多态的概念 多态是面向对象编程的三大特性之一(封装、继承、多态),指同一操作作用于不同对象时,可以产生不同的行为。Java中主要通过方法重写(Override)和接口/抽象类实现多态。 实现多态的三…

vue如何实现高亮

vue如何实现高亮

实现文本高亮的方法 在Vue中实现文本高亮通常可以通过以下几种方式完成: 使用v-html指令结合字符串替换 通过将需要高亮的文本部分替换为HTML标签(如<span class="highl…

java如何打印数组

java如何打印数组

打印数组的方法 在Java中,打印数组有多种方式,以下是几种常见的方法: 使用Arrays.toString()方法 这种方法适用于一维数组,可以快速将数组转换为字符串形式输出: int[] a…

如何阅读java源码

如何阅读java源码

阅读Java源码的方法 选择合适的源码项目 初学者建议从JDK核心类库(如java.lang、java.util)或知名开源项目(如Spring、Guava)入手。选择文档完善、社区活跃的项目能降低理…