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); }