Example usage for org.bouncycastle.crypto.engines ElGamalEngine processBlock

List of usage examples for org.bouncycastle.crypto.engines ElGamalEngine processBlock

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.engines ElGamalEngine processBlock.

Prototype

public byte[] processBlock(byte[] in, int inOff, int inLen) 

Source Link

Document

Process a single block using the basic ElGamal algorithm.

Usage

From source file:util.secure.ElGamal.java

License:Open Source License

@Override
public byte[] encryptWithPublicKey(byte[] data) {
    ElGamalParameters params = new ElGamalParameters(keys.getP(), keys.getG());
    ElGamalPublicKeyParameters pubKey = new ElGamalPublicKeyParameters(keys.getPublicKey(), params);

    ElGamalEngine e = new ElGamalEngine();
    e.init(true, pubKey);/*from  w  ww  .j ava  2  s. co  m*/
    return e.processBlock(data, 0, data.length);
}

From source file:util.secure.ElGamal.java

License:Open Source License

public ElGamalEncrypt encryptForContract(byte[] data) {
    ElGamalParameters params = new ElGamalParameters(keys.getP(), keys.getG());
    ElGamalPublicKeyParameters pubKey = new ElGamalPublicKeyParameters(keys.getPublicKey(), params);

    ElGamalEngine e = new ElGamalEngine();
    e.init(true, pubKey);//  ww w . j av a2 s. co m
    byte[] m = e.processBlock(data, 0, data.length);
    BigInteger k = e.getK();
    BigInteger u = keys.getG().modPow(k, keys.getP());
    BigInteger v = (keys.getPublicKey().modPow(e.getK(), keys.getP()).multiply(new BigInteger(data)));
    return new ElGamalEncrypt(u, v, k, m);
}

From source file:util.secure.ElGamal.java

License:Open Source License

@Override
public byte[] decryptWithPrivateKey(byte[] data) {
    ElGamalParameters params = new ElGamalParameters(keys.getP(), keys.getG());
    ElGamalPrivateKeyParameters privKey = new ElGamalPrivateKeyParameters(keys.getPrivateKey(), params);

    ElGamalEngine e = new ElGamalEngine();
    e.init(false, privKey);/*ww w .j a  v a  2 s.  co m*/

    return e.processBlock(data, 0, data.length);
}