public class ElGamalEngine extends java.lang.Object implements AsymmetricBlockCipher
Modifier and Type | Field and Description |
---|---|
private int |
bitSize |
private boolean |
forEncryption |
private ElGamalKeyParameters |
key |
private static java.math.BigInteger |
ONE |
private java.security.SecureRandom |
random |
private static java.math.BigInteger |
TWO |
private static java.math.BigInteger |
ZERO |
Constructor and Description |
---|
ElGamalEngine() |
Modifier and Type | Method and Description |
---|---|
int |
getInputBlockSize()
Return the maximum size for an input block to this engine.
|
int |
getOutputBlockSize()
Return the maximum size for an output block to this engine.
|
void |
init(boolean forEncryption,
CipherParameters param)
initialise the ElGamal engine.
|
byte[] |
processBlock(byte[] in,
int inOff,
int inLen)
Process a single block using the basic ElGamal algorithm.
|
private ElGamalKeyParameters key
private java.security.SecureRandom random
private boolean forEncryption
private int bitSize
private static final java.math.BigInteger ZERO
private static final java.math.BigInteger ONE
private static final java.math.BigInteger TWO
public void init(boolean forEncryption, CipherParameters param)
init
in interface AsymmetricBlockCipher
forEncryption
- true if we are encrypting, false otherwise.param
- the necessary ElGamal key parameters.public int getInputBlockSize()
getInputBlockSize
in interface AsymmetricBlockCipher
public int getOutputBlockSize()
getOutputBlockSize
in interface AsymmetricBlockCipher
public byte[] processBlock(byte[] in, int inOff, int inLen)
processBlock
in interface AsymmetricBlockCipher
in
- the input array.inOff
- the offset into the input buffer where the data starts.inLen
- the length of the data to be processed.DataLengthException
- the input block is too large.