rsa的数字签名代码java
时间: 2023-07-03 08:23:51 浏览: 91
RSA数字签名Java实现
以下是一个基于Java的RSA数字签名示例代码:
```java
import java.security.*;
import java.security.spec.*;
import javax.crypto.*;
import java.util.Base64;
public class RSASignatureExample {
public static void main(String[] args) throws Exception {
// 生成RSA密钥对
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048);
KeyPair keyPair = keyPairGen.generateKeyPair();
// 要签名的原文
String message = "hello world";
// 对原文进行Hash
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] messageDigest = md.digest(message.getBytes("UTF-8"));
// 生成签名
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(keyPair.getPrivate());
signature.update(messageDigest);
byte[] signatureBytes = signature.sign();
// 验证签名
signature.initVerify(keyPair.getPublic());
signature.update(messageDigest);
boolean verified = signature.verify(signatureBytes);
if (verified) {
System.out.println("Signature is valid");
} else {
System.out.println("Signature is invalid");
}
}
}
```
此代码使用SHA-256算法对原文进行Hash,使用RSA算法进行数字签名和验证。需要注意的是,Java中的RSA算法默认使用的是PKCS#1 v1.5填充方式,与Python中的Crypto库使用的PKCS#1 v1.5填充方式是一致的。
阅读全文