Created
October 19, 2016 17:24
-
-
Save yogonza524/2642a08ec3776b8628de61f95b5ee0df to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
public class TripleDESTest { | |
public static void main(String[] args) throws Exception { | |
String text = "kyle boon"; | |
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" | |
} | |
public byte[] encrypt(String message) throws Exception { | |
final MessageDigest md = MessageDigest.getInstance("md5"); | |
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; | |
} | |
public String decrypt(byte[] message) throws Exception { | |
final MessageDigest md = MessageDigest.getInstance("md5"); | |
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"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment