import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
public class RSADemo {
public static void main(String[] args) throws Exception {
// 生成 RSA 密钥对
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048); // 指定密钥长度
KeyPair keyPair = keyGen.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 要签名的数据
String data = "Hello, RSA!";
byte[] dataBytes = data.getBytes();
// 使用私钥进行签名
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
signature.update(dataBytes);
byte[] signBytes = signature.sign();
// 使用公钥验证签名
signature.initVerify(publicKey);
signature.update(dataBytes);
boolean isVerified = signature.verify(signBytes);
System.out.println("Signature verified: " + isVerified);
}
}
生成 RSA 密钥对:
KeyPairGenerator
类生成 RSA 密钥对。通过 initialize(2048)
方法指定密钥长度为 2048 位。generateKeyPair()
方法返回一个包含公钥和私钥的 KeyPair
对象。签名数据:
Signature
类进行签名操作。getInstance("SHA256withRSA")
表示使用 SHA-256 哈希算法结合 RSA 算法进行签名。initSign(privateKey)
初始化签名对象,使用私钥进行签名。update(dataBytes)
更新要签名的数据。sign()
方法生成签名并返回字节数组。验证签名:
Signature
类进行验证操作。initVerify(publicKey)
初始化签名对象,使用公钥进行验证。update(dataBytes)
更新要验证的数据。verify(signBytes)
验证签名是否有效,返回布尔值。这段代码展示了如何使用 Java 中的 RSA 算法进行数字签名和验证。
上一篇:快速排序java
下一篇:java iterator
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站