0

I'm using code from this answer there is an example how to sign and verify signature, but how could i decrypt this kind of signature using Bouncycastle? There is no such method in java.security.Signature class.

Community
  • 1
  • 1
whd
  • 1,819
  • 1
  • 21
  • 52

1 Answers1

0

I think that you mean that you are looking for encryption/decryption sample with bouncycastle instead of a signature/verification sample which you are referencing in your question. In order to do it you can use javax.crypto.Cipher class instead of java.security.Signature I give you a simple example using AES algorithm in ECB mode (please note that there are many cipher algorithms, operation modes etc. this sample is only to show the basics):

import java.security.Key;
import java.security.Security;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class CipherBasicSample
{
    public static void main(String args[]) throws Exception
    {
        Security.addProvider(new BouncyCastleProvider());

        // text to cipher
        String secret = "secret";

        // create the key to cipher an decipher
        KeyGenerator kg = KeyGenerator.getInstance("AES","BC");
        kg.init(128);
        SecretKey sk = kg.generateKey();
        Key key = new SecretKeySpec(sk.getEncoded(), "AES");

        // get a cipher instance
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "BC");
        // init to encrypt mode
        cipher.init(Cipher.ENCRYPT_MODE, key);
        // encrypt the text
        cipher.update(secret.getBytes());
        byte[] secretEncrypt = cipher.doFinal();

        System.out.println("Encrypt text: " + new String(secretEncrypt));

        // get a cipher instance
        Cipher decipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "BC");
        // init to decrypt mode
        decipher.init(Cipher.DECRYPT_MODE, key);
        // decrypt the text
        decipher.update(secretEncrypt);
        byte[] secretDecrypt = decipher.doFinal();

        System.out.println("Encrypt text: " + new String(secretDecrypt));
    }
}

Furthermore you can check the bc.prov source code where there are some test classes to test different cipher implementations: src code or on gitHub

Hope this helps,

albciff
  • 18,112
  • 4
  • 64
  • 89