import java
.security
.Key;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
public class MainClass {
public static void main(String[] args) throws Exception {
KeyGenerator kg = KeyGenerator.getInstance("DESede");
Key sharedKey
= kg
.generateKey
();
String password = "password";
byte[] salt = "salt1234".getBytes();
PBEParameterSpec paramSpec = new PBEParameterSpec(salt, 20);
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
SecretKeyFactory kf = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey passwordKey = kf.generateSecret(keySpec);
Cipher c = Cipher.getInstance("PBEWithMD5AndDES");
c.init(Cipher.WRAP_MODE, passwordKey, paramSpec);
byte[] wrappedKey = c.wrap(sharedKey);
c = Cipher.getInstance("DESede");
c.init(Cipher.ENCRYPT_MODE, sharedKey);
byte[] input = "input".getBytes();
byte[] encrypted = c.doFinal(input);
c = Cipher.getInstance("PBEWithMD5AndDES");
c.init(Cipher.UNWRAP_MODE, passwordKey, paramSpec);
Key unwrappedKey
= c
.unwrap
(wrappedKey
, "DESede", Cipher
.SECRET_KEY
);
c = Cipher.getInstance("DESede");
c.init(Cipher.DECRYPT_MODE, unwrappedKey);
System.out
.println
(new String
(c
.doFinal
(encrypted
))); }
}
aW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OwoKaW1wb3J0IGphdmF4LmNyeXB0by5DaXBoZXI7CmltcG9ydCBqYXZheC5jcnlwdG8uS2V5R2VuZXJhdG9yOwppbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleTsKaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXlGYWN0b3J5OwppbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuUEJFS2V5U3BlYzsKaW1wb3J0IGphdmF4LmNyeXB0by5zcGVjLlBCRVBhcmFtZXRlclNwZWM7CgpwdWJsaWMgY2xhc3MgTWFpbkNsYXNzIHsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgIEtleUdlbmVyYXRvciBrZyA9IEtleUdlbmVyYXRvci5nZXRJbnN0YW5jZSgiREVTZWRlIik7CiAgICBLZXkgc2hhcmVkS2V5ID0ga2cuZ2VuZXJhdGVLZXkoKTsKCiAgICBTdHJpbmcgcGFzc3dvcmQgPSAicGFzc3dvcmQiOwogICAgYnl0ZVtdIHNhbHQgPSAic2FsdDEyMzQiLmdldEJ5dGVzKCk7CiAgICBQQkVQYXJhbWV0ZXJTcGVjIHBhcmFtU3BlYyA9IG5ldyBQQkVQYXJhbWV0ZXJTcGVjKHNhbHQsIDIwKTsKICAgIFBCRUtleVNwZWMga2V5U3BlYyA9IG5ldyBQQkVLZXlTcGVjKHBhc3N3b3JkLnRvQ2hhckFycmF5KCkpOwogICAgU2VjcmV0S2V5RmFjdG9yeSBrZiA9IFNlY3JldEtleUZhY3RvcnkuZ2V0SW5zdGFuY2UoIlBCRVdpdGhNRDVBbmRERVMiKTsKICAgIFNlY3JldEtleSBwYXNzd29yZEtleSA9IGtmLmdlbmVyYXRlU2VjcmV0KGtleVNwZWMpOwogICAgQ2lwaGVyIGMgPSBDaXBoZXIuZ2V0SW5zdGFuY2UoIlBCRVdpdGhNRDVBbmRERVMiKTsKICAgIGMuaW5pdChDaXBoZXIuV1JBUF9NT0RFLCBwYXNzd29yZEtleSwgcGFyYW1TcGVjKTsKICAgIGJ5dGVbXSB3cmFwcGVkS2V5ID0gYy53cmFwKHNoYXJlZEtleSk7CgogICAgYyA9IENpcGhlci5nZXRJbnN0YW5jZSgiREVTZWRlIik7CiAgICBjLmluaXQoQ2lwaGVyLkVOQ1JZUFRfTU9ERSwgc2hhcmVkS2V5KTsKICAgIGJ5dGVbXSBpbnB1dCA9ICJpbnB1dCIuZ2V0Qnl0ZXMoKTsKICAgIGJ5dGVbXSBlbmNyeXB0ZWQgPSBjLmRvRmluYWwoaW5wdXQpOwoKICAgIGMgPSBDaXBoZXIuZ2V0SW5zdGFuY2UoIlBCRVdpdGhNRDVBbmRERVMiKTsKCiAgICBjLmluaXQoQ2lwaGVyLlVOV1JBUF9NT0RFLCBwYXNzd29yZEtleSwgcGFyYW1TcGVjKTsKICAgIEtleSB1bndyYXBwZWRLZXkgPSBjLnVud3JhcCh3cmFwcGVkS2V5LCAiREVTZWRlIiwgQ2lwaGVyLlNFQ1JFVF9LRVkpOwoKICAgIGMgPSBDaXBoZXIuZ2V0SW5zdGFuY2UoIkRFU2VkZSIpOwogICAgYy5pbml0KENpcGhlci5ERUNSWVBUX01PREUsIHVud3JhcHBlZEtleSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhjLmRvRmluYWwoZW5jcnlwdGVkKSkpOwogIH0KfQ==
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
public class MainClass {
public static void main(String[] args) throws Exception {
KeyGenerator kg = KeyGenerator.getInstance("DESede");
Key sharedKey = kg.generateKey();
String password = "password";
byte[] salt = "salt1234".getBytes();
PBEParameterSpec paramSpec = new PBEParameterSpec(salt, 20);
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
SecretKeyFactory kf = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey passwordKey = kf.generateSecret(keySpec);
Cipher c = Cipher.getInstance("PBEWithMD5AndDES");
c.init(Cipher.WRAP_MODE, passwordKey, paramSpec);
byte[] wrappedKey = c.wrap(sharedKey);
c = Cipher.getInstance("DESede");
c.init(Cipher.ENCRYPT_MODE, sharedKey);
byte[] input = "input".getBytes();
byte[] encrypted = c.doFinal(input);
c = Cipher.getInstance("PBEWithMD5AndDES");
c.init(Cipher.UNWRAP_MODE, passwordKey, paramSpec);
Key unwrappedKey = c.unwrap(wrappedKey, "DESede", Cipher.SECRET_KEY);
c = Cipher.getInstance("DESede");
c.init(Cipher.DECRYPT_MODE, unwrappedKey);
System.out.println(new String(c.doFinal(encrypted)));
}
}