java 实现电子签名_Java实现数字签名
时间: 2024-02-02 13:02:32 浏览: 21
Java可以使用Java Cryptography Architecture (JCA)和Java Cryptography Extension (JCE)实现数字签名。以下是一个简单的示例代码:
```java
import java.security.*;
import java.util.Base64;
public class DigitalSignatureExample {
public static void main(String args[]) throws Exception {
String message = "Hello, world!"; // 待签名的消息
// 生成公钥和私钥
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
keyGen.initialize(1024, random);
KeyPair keyPair = keyGen.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
// 对消息进行签名
Signature signature = Signature.getInstance("SHA1withDSA");
signature.initSign(privateKey);
signature.update(message.getBytes());
byte[] signatureBytes = signature.sign();
// 验证签名
signature.initVerify(publicKey);
signature.update(message.getBytes());
boolean verified = signature.verify(signatureBytes);
System.out.println("Signature verified: " + verified);
}
}
```
该示例使用DSA加密算法生成公钥和私钥,并使用SHA1withDSA签名算法对消息进行签名和验证。注意,在实际应用中,需要将公钥发送给验证方以进行验证。签名结果可以使用Base64编码以便于传输和存储。