import java.security.MessageDigest;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
class TripleDESTest {
Class1 key = new Class1();
byte[] codedtext = new TripleDESTest().encrypt(text);
String decodedtext
= new TripleDESTest
().
decrypt(codedtext
);
System.
out.
println(codedtext
); // this is a byte array, you'll just see a reference to an array System.
out.
println(decodedtext
); // This correctly shows "kyle boon" }
final byte[] digestOfPassword = md.digest("HG58YZ3CR9"
.getBytes("utf-8"));
final byte[] keyBytes
= Arrays.
copyOf(digestOfPassword,
24); for (int j = 0, k = 16; j < 8;) {
keyBytes[k++] = keyBytes[j++];
}
final SecretKey key = new SecretKeySpec(keyBytes, "DESede");
final IvParameterSpec iv = new IvParameterSpec(new byte[8]);
final Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
final byte[] plainTextBytes = message.getBytes("utf-8");
final byte[] cipherText = cipher.doFinal(plainTextBytes);
// final String encodedCipherText = new sun.misc.BASE64Encoder()
// .encode(cipherText);
return cipherText;
}
final byte[] digestOfPassword = md.digest("HG58YZ3CR9"
.getBytes("utf-8"));
final byte[] keyBytes
= Arrays.
copyOf(digestOfPassword,
24); for (int j = 0, k = 16; j < 8;) {
keyBytes[k++] = keyBytes[j++];
}
final SecretKey key = new SecretKeySpec(keyBytes, "DESede");
final IvParameterSpec iv = new IvParameterSpec(new byte[8]);
final Cipher decipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
decipher.init(Cipher.DECRYPT_MODE, key, iv);
// final byte[] encData = new
// sun.misc.BASE64Decoder().decodeBuffer(message);
final byte[] plainText = decipher.doFinal(message);
return new String(plainText,
"UTF-8"); }
}
class Class1
{
private final char[] lst = { 'B', 'A', 'R', 'C', 'O', '-', 'S', 'T', 'R', 'I', 'N', 'G', 'E', 'N', 'C', 'R', 'Y', 'P', 'T', 'I', 'O', 'N', '-', 'U', 'L' };
Class1() {}
{
}
}
aW1wb3J0IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdDsKaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZheC5jcnlwdG8uQ2lwaGVyOwppbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleTsKaW1wb3J0IGphdmF4LmNyeXB0by5zcGVjLkl2UGFyYW1ldGVyU3BlYzsKaW1wb3J0IGphdmF4LmNyeXB0by5zcGVjLlNlY3JldEtleVNwZWM7CgogY2xhc3MgVHJpcGxlREVTVGVzdCB7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CgogICAgCUNsYXNzMSBrZXkgPSBuZXcgQ2xhc3MxKCk7CgkJU3RyaW5nIHRleHQgPSBTeXN0ZW0ub3V0LnByaW50bG4oa2V5KTsKCQkgCgkJCgkJCgogICAgCWJ5dGVbXSBjb2RlZHRleHQgPSBuZXcgVHJpcGxlREVTVGVzdCgpLmVuY3J5cHQodGV4dCk7CiAgICAJU3RyaW5nIGRlY29kZWR0ZXh0ID0gbmV3IFRyaXBsZURFU1Rlc3QoKS5kZWNyeXB0KGNvZGVkdGV4dCk7CgogICAgCVN5c3RlbS5vdXQucHJpbnRsbihjb2RlZHRleHQpOyAvLyB0aGlzIGlzIGEgYnl0ZSBhcnJheSwgeW91J2xsIGp1c3Qgc2VlIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5CiAgICAJU3lzdGVtLm91dC5wcmludGxuKGRlY29kZWR0ZXh0KTsgLy8gVGhpcyBjb3JyZWN0bHkgc2hvd3MgImt5bGUgYm9vbiIKICAgIH0KCiAgICBwdWJsaWMgYnl0ZVtdIGVuY3J5cHQoU3RyaW5nIG1lc3NhZ2UpIHRocm93cyBFeGNlcHRpb24gewogICAgCWZpbmFsIE1lc3NhZ2VEaWdlc3QgbWQgPSBNZXNzYWdlRGlnZXN0LmdldEluc3RhbmNlKCJtZDUiKTsKICAgIAlmaW5hbCBieXRlW10gZGlnZXN0T2ZQYXNzd29yZCA9IG1kLmRpZ2VzdCgiSEc1OFlaM0NSOSIKICAgIAkJCS5nZXRCeXRlcygidXRmLTgiKSk7CiAgICAJZmluYWwgYnl0ZVtdIGtleUJ5dGVzID0gQXJyYXlzLmNvcHlPZihkaWdlc3RPZlBhc3N3b3JkLCAyNCk7CiAgICAJZm9yIChpbnQgaiA9IDAsIGsgPSAxNjsgaiA8IDg7KSB7CiAgICAJCWtleUJ5dGVzW2srK10gPSBrZXlCeXRlc1tqKytdOwogICAgCX0KCiAgICAJZmluYWwgU2VjcmV0S2V5IGtleSA9IG5ldyBTZWNyZXRLZXlTcGVjKGtleUJ5dGVzLCAiREVTZWRlIik7CiAgICAJZmluYWwgSXZQYXJhbWV0ZXJTcGVjIGl2ID0gbmV3IEl2UGFyYW1ldGVyU3BlYyhuZXcgYnl0ZVs4XSk7CiAgICAJZmluYWwgQ2lwaGVyIGNpcGhlciA9IENpcGhlci5nZXRJbnN0YW5jZSgiREVTZWRlL0NCQy9QS0NTNVBhZGRpbmciKTsKICAgIAljaXBoZXIuaW5pdChDaXBoZXIuRU5DUllQVF9NT0RFLCBrZXksIGl2KTsKCiAgICAJZmluYWwgYnl0ZVtdIHBsYWluVGV4dEJ5dGVzID0gbWVzc2FnZS5nZXRCeXRlcygidXRmLTgiKTsKICAgIAlmaW5hbCBieXRlW10gY2lwaGVyVGV4dCA9IGNpcGhlci5kb0ZpbmFsKHBsYWluVGV4dEJ5dGVzKTsKICAgIAkvLyBmaW5hbCBTdHJpbmcgZW5jb2RlZENpcGhlclRleHQgPSBuZXcgc3VuLm1pc2MuQkFTRTY0RW5jb2RlcigpCiAgICAJLy8gLmVuY29kZShjaXBoZXJUZXh0KTsKCiAgICAJcmV0dXJuIGNpcGhlclRleHQ7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBkZWNyeXB0KGJ5dGVbXSBtZXNzYWdlKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgIAlmaW5hbCBNZXNzYWdlRGlnZXN0IG1kID0gTWVzc2FnZURpZ2VzdC5nZXRJbnN0YW5jZSgibWQ1Iik7CiAgICAJZmluYWwgYnl0ZVtdIGRpZ2VzdE9mUGFzc3dvcmQgPSBtZC5kaWdlc3QoIkhHNThZWjNDUjkiCiAgICAJCQkuZ2V0Qnl0ZXMoInV0Zi04IikpOwogICAgCWZpbmFsIGJ5dGVbXSBrZXlCeXRlcyA9IEFycmF5cy5jb3B5T2YoZGlnZXN0T2ZQYXNzd29yZCwgMjQpOwogICAgCWZvciAoaW50IGogPSAwLCBrID0gMTY7IGogPCA4OykgewogICAgCQlrZXlCeXRlc1trKytdID0ga2V5Qnl0ZXNbaisrXTsKICAgIAl9CgogICAgCWZpbmFsIFNlY3JldEtleSBrZXkgPSBuZXcgU2VjcmV0S2V5U3BlYyhrZXlCeXRlcywgIkRFU2VkZSIpOwogICAgCWZpbmFsIEl2UGFyYW1ldGVyU3BlYyBpdiA9IG5ldyBJdlBhcmFtZXRlclNwZWMobmV3IGJ5dGVbOF0pOwogICAgCWZpbmFsIENpcGhlciBkZWNpcGhlciA9IENpcGhlci5nZXRJbnN0YW5jZSgiREVTZWRlL0NCQy9QS0NTNVBhZGRpbmciKTsKICAgIAlkZWNpcGhlci5pbml0KENpcGhlci5ERUNSWVBUX01PREUsIGtleSwgaXYpOwoKICAgIAkvLyBmaW5hbCBieXRlW10gZW5jRGF0YSA9IG5ldwogICAgCS8vIHN1bi5taXNjLkJBU0U2NERlY29kZXIoKS5kZWNvZGVCdWZmZXIobWVzc2FnZSk7CiAgICAJZmluYWwgYnl0ZVtdIHBsYWluVGV4dCA9IGRlY2lwaGVyLmRvRmluYWwobWVzc2FnZSk7CgogICAgCXJldHVybiBuZXcgU3RyaW5nKHBsYWluVGV4dCwgIlVURi04Iik7CiAgICB9CiAgfQpjbGFzcyBDbGFzczEKICB7CiAgICBwcml2YXRlIGZpbmFsIGNoYXJbXSBsc3QgPSB7ICdCJywgJ0EnLCAnUicsICdDJywgJ08nLCAnLScsICdTJywgJ1QnLCAnUicsICdJJywgJ04nLCAnRycsICdFJywgJ04nLCAnQycsICdSJywgJ1knLCAnUCcsICdUJywgJ0knLCAnTycsICdOJywgJy0nLCAnVScsICdMJyB9OwogICAgCiAgICBDbGFzczEoKSB7fQogICAgCiAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKICAgIHsKICAgICAgcmV0dXJuIG5ldyBTdHJpbmcodGhpcy5sc3QpOwogICAgfQogIH0=