Java实现一个非对称加密算法

发布时间:2024年01月16日

非对称加密算法通常使用公钥和私钥进行加密和解密。在Java中,可以使用java.security包中的类来实现非对称加密算法。以下是一个简单的示例,使用RSA算法进行加密和解密:

import java.security.*;
import javax.crypto.*;

public class RSAExample {
    public static void main(String[] args) throws Exception {
        // 生成密钥对
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(2048);
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        PublicKey publicKey = keyPair.getPublic();
        PrivateKey privateKey = keyPair.getPrivate();

        // 要加密的数据
        String data = "这是一个待加密的字符串";

        // 使用公钥加密数据
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encryptedData = cipher.doFinal(data.getBytes());
        System.out.println("加密后的数据: " + bytesToHex(encryptedData));

        // 使用私钥解密数据
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] decryptedData = cipher.doFinal(encryptedData);
        System.out.println("解密后的数据: " + new String(decryptedData));
    }

    private static String bytesToHex(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02X", b));
        }
        return sb.toString();
    }
}

这个示例首先生成了一个RSA密钥对,然后使用公钥对数据进行加密,最后使用私钥对加密后的数据进行解密。注意,这个示例仅用于演示目的,实际应用中需要考虑更多的安全性因素。

文章来源:https://blog.csdn.net/qq_41243828/article/details/135622319
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。