/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.security.MessageDigest;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
}
{
try
{
byte[] pt = s.getBytes();
byte[] ct = digest.digest(pt);
if (bytesToHex(ct).equals("66b6085b52d76556e012e68da00e348c"))
{
for (int i : new int[] { 2, 13, 12, 6, 015 })
{
result = result + s.charAt(i);
}
return result;
}
return null;
}
return null;
}
{
try
{
byte[] pt = s.getBytes();
byte[] ct = digest.digest(pt);
if (bytesToHex(ct).equals("018ba59e2008dfb245e84cc75d1492a061ffda75e4945aff2ae50794275d62bd7a79e9f79823b7de0078699a82fea921d40e0250aced272cd688f94bda8d44e3"))
{
for (int i : new int[] { 6, 16, 11, 24, 4, 21, 22, 31 }) {
result = result + s.charAt(i);
}
return result;
}
return null;
}
return null;
}
{
try
{
for (int i = 24; i > 0; i--) {
key = key + s.charAt(i);
}
byte[] theKey = key.getBytes();
for (int i : new int[] { 1, 21, 24, 19, 26, 7, 15, 29 }) {
iv = iv + s.charAt(i);
}
byte[] theIVp = iv.getBytes();
byte[] pt = s.getBytes();
Cipher cipher = Cipher.getInstance("TripleDES/CFB64/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec(theKey, "TripleDES");
cipher.init(1, keySpec, apSpec);
byte[] ct = cipher.doFinal(pt);
return bytesToHex(ct).equals(
"f6e0a472124df090804f925e511aac5779027350be117cd26f02983c46e3") ? iv : null;
}
return null;
}
{
try
{
for (int i : new int[] { 6, 30, 24, 19, 7, 26, 17, 31, 29 }) {
key = key + s.charAt(i);
}
byte[] theKey = key.getBytes();
byte[] theIVp = hexToBytes("1234567890ABCDEF");
byte[] pt = s.getBytes();
Cipher cipher = Cipher.getInstance("Blowfish/CBC/ISO10126Padding");
SecretKeySpec keySpec = new SecretKeySpec(theKey, "Blowfish");
cipher.init(1, keySpec, asSpec);
byte[] ct = cipher.doFinal(pt);
return bytesToHex(ct).startsWith(
"2bb1ca91478b66968c154822379416fd9b26d998c80856638cf9e02cd5c09ff4") ? key :
null;
}
return null;
}
{
try
{
byte[] theKey = "cafebabecafebabe".getBytes();
byte[] pt = s.getBytes();
SecretKeySpec keySpec = new SecretKeySpec(theKey, "HmacMD5");
Mac mac = Mac.getInstance("HmacMD5");
mac.init(keySpec);
byte[] ct = mac.doFinal(pt);
if (bytesToHex(ct).equals("3298712a2cb84e1f1a36855adc68f5f1"))
{
for (int i : new int[] { 0, 16, 6, 43, 37, 21, 26, 29 }) {
result = result + s.charAt(i);
}
return result;
}
return null;
}
return null;
}
{
try
{
byte[] theKey = "cafebabecafebabe".getBytes();
byte[] theIVp = hexToBytes("0123456789ABCDEF0123456789ABCDEF");
byte[] pt = s.getBytes();
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec keySpec = new SecretKeySpec(theKey, "AES");
cipher.init(1, keySpec, apSpec);
byte[] ct = cipher.doFinal(pt);
if (bytesToHex(ct).equals(
"12b2de1f02647652edd2cde34cdab1ff39fc4d137616cf4b45849f07a2df73550261482ab5af84f1f5b3e4a15fab1f5adceef07ae6c42ea776d9a18b777c0733"))
{
for (int i : new int[] { 12, 24, 3, 30, 48, 28, 18, 39, 45, 14, 33 }) {
result = result + s.charAt(i);
}
return result;
}
return null;
}
return null;
}
{
try
{
byte[] salt = hexToBytes("CAFEBABECAFEBABE");
int count = 20;
int[] pos = { 16, 5, 21, 28, 4, 10, 40, 46, 26, 7, 33, 41, 49, 12 };
char[] theKey = new char[pos.length];
for (int i = 0; i < pos.length; i++) {
theKey[i] = s.charAt(pos[i]);
}
byte[] pt = s.getBytes();
Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES");
PBEKeySpec pbeKeySpec = new PBEKeySpec(theKey);
SecretKeyFactory keyFac = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
PBEParameterSpec pbeParamSpec = new PBEParameterSpec(salt, count);
SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec);
cipher.init(1, pbeKey, pbeParamSpec);
byte[] ct = cipher.doFinal(pt);
return bytesToHex(ct)
.
equals("e2697301c74bfa8064816741a11046cf3fa18f1a63afab2a5ce4368ac6e98947a195f541717b208bd9451473e483619f63c4c7ce515de56d") ? new String(theKey
):null; }
return null;
}
{
try
{
byte[] pt = s.getBytes();
byte[] ct = digest.digest(pt);
return bytesToHex(ct);
}
return null;
}
public static byte[] hexToBytes
(String str
) {
if (str == null) {
return null;
}
int len = str.length() / 2;
byte[] buffer = new byte[len];
for (int i = 0; i < len; i++) {
buffer
[i
] = ((byte)Integer.
parseInt(str.
substring(i
* 2, i
* 2 + 2),
16)); }
return buffer;
}
public static String bytesToHex
(byte[] data
) {
if (data == null) {
return null;
}
int len = data.length;
for (int i = 0; i < len; i++)
{
if ((data[i] & 0xFF) < 16) {
hexString.append(0);
}
hexString.
append(Integer.
toHexString(data
[i
] & 0xFF
)); }
return hexString.toString();
}
}