The following example demonstrates how a DES-EDE block cipher can be
constructed as a Cascade of three DES Stages.
HashMap map = new HashMap();
HashMap map1 = new HashMap();
HashMap map2 = new HashMap();
HashMap map3 = new HashMap();
Cascade new3DES = new Cascade();
Object des1 = new3DES.append(
Stage.getInstance(
ModeFactory.getInstance(Registry.ECB_MODE, new DES(), 8),
Direction.FORWARD));
Object des2 = new3DES.append(
Stage.getInstance(
ModeFactory.getInstance(Registry.ECB_MODE, new DES(), 8),
Direction.REVERSED));
Object des3 = new3DES.append(
Stage.getInstance(
ModeFactory.getInstance(Registry.ECB_MODE, new DES(), 8),
Direction.FORWARD));
map.put(des1, map1);
map.put(des2, map2);
map.put(des3, map3);
map1.put(IBlockCipher.KEY_MATERIAL, key1material);
map2.put(IBlockCipher.KEY_MATERIAL, key2material);
map3.put(IBlockCipher.KEY_MATERIAL, key3material);
// encryption
map.put(Cascade.DIRECTION, Direction.FORWARD);
byte[] pt = ...; // some plaintext to encrypt
byte[] ct = new byte[pt.length]; // where ciphertext is returned
try
{
new3DES.init(map);
new3DES.update(pt, 0, ct, 0);
}
catch (InvalidKeyException x)
{
x.printStackTrace(System.err);
}