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); statt signature1.update(sigBytes);. In dem code, den Sie gezeigt haben signature1 hat keine Informationen über die Daten, um zu überprüfen, mit Ihrer Unterschrift.
Schreibe einen Kommentar