DES implementation in Java
- Key generator
- CBC implementation (currently, only EBC is implemented)
- The message:
This produces:
String hex = Bits.stringToHex("Hello World!"); //hex = 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 Message msg = new Message(hex); System.out.println("Message { " + msg.toString() + " }"); for (int i = 0; i < msg.getBlockCount(); i++) { System.out.println(Arrays.toString(msg.getBlock(i))); }
Message { Hex: 48656C6C6F20576F726C6421 | Text: Hello World! } [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0] [0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
- The key:
Key key = new Key("6D62B676B5F7B932");
- The DES object:
DES des = new DES();
- Encryption
This produces:
Message enc = des.encrypt(msg, key); System.out.println("Encoded { " + enc.toString() + " }"); for (int i = 0; i < enc.getBlockCount(); i++) { System.out.println(Arrays.toString(enc.getBlock(i))); }
Encoded { Hex: FD28DB5FC8D7117DE48C94B4882A07C8 | Text: ý(Û_È×�}ä��´�*�È } [1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1] [1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0]
- Decryption
This produces:
Message dec = des.decrypt(enc, key); System.out.println("Decoded { " + dec.toString() + " }"); for (int i = 0; i < dec.getBlockCount(); i++) { System.out.println(Arrays.toString(dec.getBlock(i))); }
Decoded { Hex: 48656C6C6F20576F726C6421 | Text: Hello World! } [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0] [0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]