/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.security.spec.*;
import javax.crypto.*;
import javax.crypto.spec.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static String byteToHex
(byte[] bytes
) { StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.
append(String.
format("%02X ", b
)); }
return sb.toString();
}
{
final byte[] SALT= { (byte) 0x21, (byte) 0x21, (byte) 0xF0, (byte) 0x55,
(byte) 0xC3, (byte) 0x9F, (byte) 0x5A, (byte) 0x75 };
final int ITERATION_COUNT = 31;
KeySpec keySpec
= new PBEKeySpec
("test".
toCharArray(), SALT, ITERATION_COUNT
);
SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
Cipher c = Cipher.getInstance("PBEWithMD5AndDES");
c.init(Cipher.ENCRYPT_MODE, key, paramSpec);
byte[] ct = c.doFinal("test".getBytes("UTF-8"));
System.
out.
println(byteToHex
(ct
)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuKjsKaW1wb3J0IGphdmF4LmNyeXB0by4qOwppbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGJ5dGVUb0hleChieXRlW10gYnl0ZXMpIHsKCQlTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKCSAgICBmb3IgKGJ5dGUgYiA6IGJ5dGVzKSB7CgkgICAgICAgIHNiLmFwcGVuZChTdHJpbmcuZm9ybWF0KCIlMDJYICIsIGIpKTsKCSAgICB9CgkgICAgcmV0dXJuIHNiLnRvU3RyaW5nKCk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWZpbmFsIGJ5dGVbXSBTQUxUPSB7IChieXRlKSAweDIxLCAoYnl0ZSkgMHgyMSwgKGJ5dGUpIDB4RjAsIChieXRlKSAweDU1LCAKCQkJCQkJCSAoYnl0ZSkgMHhDMywgKGJ5dGUpIDB4OUYsIChieXRlKSAweDVBLCAoYnl0ZSkgMHg3NSB9OwoJCWZpbmFsIGludCAgIElURVJBVElPTl9DT1VOVCA9IDMxOwogICAgICAgIEtleVNwZWMga2V5U3BlYyA9IG5ldyBQQkVLZXlTcGVjKCJ0ZXN0Ii50b0NoYXJBcnJheSgpLCBTQUxULCBJVEVSQVRJT05fQ09VTlQpOwogICAgICAgIEFsZ29yaXRobVBhcmFtZXRlclNwZWMgcGFyYW1TcGVjID0gbmV3IFBCRVBhcmFtZXRlclNwZWMoU0FMVCwgSVRFUkFUSU9OX0NPVU5UKTsKCiAgICAgICAgU2VjcmV0S2V5IGtleSA9IFNlY3JldEtleUZhY3RvcnkuZ2V0SW5zdGFuY2UoIlBCRVdpdGhNRDVBbmRERVMiKS5nZW5lcmF0ZVNlY3JldChrZXlTcGVjKTsKCgkJQ2lwaGVyIGMgPSBDaXBoZXIuZ2V0SW5zdGFuY2UoIlBCRVdpdGhNRDVBbmRERVMiKTsKCQljLmluaXQoQ2lwaGVyLkVOQ1JZUFRfTU9ERSwga2V5LCBwYXJhbVNwZWMpOwoJCQoJCWJ5dGVbXSBjdCA9IGMuZG9GaW5hbCgidGVzdCIuZ2V0Qnl0ZXMoIlVURi04IikpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYnl0ZVRvSGV4KGN0KSk7Cgl9Cn0=