如何用Java代码展示数字签名的实现
时间: 2023-06-04 14:08:55 浏览: 178
RSA数字签名java实现
4星 · 用户满意度95%
数字签名是一种保证信息完整性和认证发送方身份的技术。Java提供了API来生成和验证数字签名。以下是展示数字签名实现的Java代码示例:
```java
import java.security.*;
import java.util.Base64;
public class DigitalSignatureExample {
public static void main(String[] args) throws Exception {
String message = "Hello, World!";
String algorithm = "SHA256withRSA";
// Generate Key Pair
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048);
KeyPair keyPair = keyPairGen.generateKeyPair();
// Signature Object
Signature signature = Signature.getInstance(algorithm);
signature.initSign(keyPair.getPrivate());
// Sign the message
signature.update(message.getBytes());
byte[] digitalSignature = signature.sign();
String signatureStr = Base64.getEncoder().encodeToString(digitalSignature);
System.out.println("Digital Signature: " + signatureStr);
// Verify the message
signature.initVerify(keyPair.getPublic());
signature.update(message.getBytes());
boolean verified = signature.verify(digitalSignature);
System.out.println("Verified: " + verified);
}
}
```
首先,我们生成一个RSA密钥对,然后使用SHA-256作为哈希算法和RSA算法作为签名算法。然后我们使用私钥进行数字签名,签名结果以Base64编码字符串的形式表示。接下来,我们使用公钥验证数字签名,再次哈希消息并提供数字签名以进行验证。
阅读全文