RSA Signieren und überprüfen in java
Ich versuche, eine Nachricht signieren in java, und es scheint nicht zu funktionieren. Die überprüfung Schritt gibt mir false.
Kann mir jemand sagen, wo liegt mein Fehler. Ich kann nicht verstehen, was ich falsch mache.
Dank
String messageString = "text";
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC");
keyGen.initialize(512, new SecureRandom());
KeyPair keyPair = keyGen.generateKeyPair();
PublicKey RSAPublicKey = keyPair.getPublic();
PrivateKey RSAPrivateKey = keyPair.getPrivate();
System.out.println("public key = " + RSAPublicKey);
System.out.println("private key = " + RSAPrivateKey);
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Signature signature = Signature.getInstance("SHA1withRSA", "BC");
signature.initSign(RSAPrivateKey, new SecureRandom());
byte[] message = messageString.getBytes();
signature.update(message);
byte[] sigBytes = signature.sign();
Signature signature1 = Signature.getInstance("SHA1withRSA", "BC");
signature1.initVerify(RSAPublicKey);
signature1.update(sigBytes);
boolean result = signature1.verify(sigBytes);
System.out.println("result = "+result);
} catch (NoSuchAlgorithmException | NoSuchProviderException | SignatureException | InvalidKeyException ex) {
} }
- Sie schreiben sollte
signature1.update(message);
stattsignature1.update(sigBytes);
. In dem code, den Sie gezeigt habensignature1
hat keine Informationen über die Daten, um zu überprüfen, mit Ihrer Unterschrift.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie Ihre Unterschrift in Variablen
sigBytes
und Ihre Nachricht wird in der variablemessage
.Um zu überprüfen, die eine Nachricht zuerst
signature1.update(message)
tun, und dannsignature1.verify(sigBytes)
.Im folgenden Codebeispiel wird überprüft, Signatur:
🙂