Skip to content

Instantly share code, notes, and snippets.

@losywee
Created July 2, 2018 13:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save losywee/a7223bce4f43facbc2b9b299d5afcef0 to your computer and use it in GitHub Desktop.
Save losywee/a7223bce4f43facbc2b9b299d5afcef0 to your computer and use it in GitHub Desktop.
China-telecom mobile client encryption.
import java.security.MessageDigest;
import java.util.Arrays;
import java.io.IOException;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TripleDESTest {
public static void main(String[] args) throws Exception {
String text = "kyle boon";
String myenc = "b5720f816f50db5eb94116fd795b9f770f4af1f252692aa8c138f0e8150856db0b52b7c8000a7be699aabc4ab106f380f9e488a10e8269792beb5b46a667cdf32e20cf7649e74841dcfc49d871e100bda5b005efdca1abf6d8f95b802b6db01dc0bc44d9f75be7b899fcac6bf3674bff51429cb76f9ea218fa2bad0b88a6c6c80d9edbb96f284e26c08a514ffe89869973b1d297873df3042f7fed5cff21498279cee5c1521deab082083b21bbdbcdcbe94fb492867d0f8639414c08008bd7b9ae59b773cdbe2b897f9b28a9a4d473bee08e0b0731cca8914c06e27777916e0455e08e90a31e6a343619a5620f5f11f2e56d31e64c688e0666de68dcc0438d925266909e414057b2a8ae5354f929c864fe66c659af40b7983e3c9c2a85356f8038cbcb7c6bb87f104f8f400e4d4aba07078d52cf05c392ddebc21e8b94d69c20332ac549b8acc78f7772fc157cb8eabe08222050cfbc58c5d01be4d5444f2effba81b9e5a0ac8f6167a3e6e925ee5127c659a6b536128971c3f9655ac45ab963f14ed244d898951f39704426863f0e15e3c12a59d2b668c64d6ab24bbc83b675ba8ad34b22d2a873610baaf4a29ec504631b51c29b7b9de6afbe1e7b7137eca16028f2699faf34a331011accacae1f5e2da23ee1c75e6283f342e33b3dfead961df25486471f98217ab187cedf293eb0aa87ef25ec66e00339358f8608e1619e8c174a6509e00333f3df5d155ed0ef55620c2f71a8b3106ce199f909ee77a63bfb55b5ced1ce8b55a7ce9bc2337f0b4777a15b09969f480a44b97090e20040e4b7f74ed1617bd12d9241dc0e46ce8da9e1349247370f3464114ec4cca0db1e0feb08b088969dbf307475cd6cc674ddd699ad4d1b1b717a3024aac0e068eb64970cd98b2979e281e653c6103ffd68e5fdafb7fdfe3334ab86bd9a04e30f9f2e1c7bcb3a0e0d935a032501006c72213252740213089361491258627b014597088badc9a6a462966656ef32fbbe84f0de2f02c3a69348088948a2cf1bd9b3d2a480c860224286724a483e8f3b260ac52c2f19578c92dd88db81a72b7a3ff5a09f394e4184d9fdf6da7d5597ad1fe6e48924e7d90e40ea9e6f05c1add83396b0007ff002a2854078f8799638981d4b8896b0a89c232247953fa8c2055d8c292f7714bd48ab24a5e2f2e7dc35ec682bd592ca0eafefbd92a7c94f318240d85717908056c8657dc899151a82a92adb6bd268cf35ce03f86d95fcb83d02492b33c508fab04390d85bbb57d2469f3698f8e49091cfc3f335e685cda3fc827edd5db673832efa4dbb2d03f09e20bb31212e7d154e5af7a970984425d8fad50d4fbdc4e89dafb1eb6b78b7ed2ba2684e92d13165f389c238092ca79fd49da580168d94ce09e40d3117c95f5bca26a6d2355cf33c8e2c156a44a71eab87";
byte[] byteData = TripleDESTest.m4427a(myenc);
String decodedtext = new TripleDESTest().decrypt(byteData);
System.out.println(decodedtext);
}
public String getTimeStamp() {
return (new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
}
public String decrypt(byte[] message) throws Exception {
final byte[] digestOfPassword = TripleDESTest.m4430d("1234567`90koiuyhgtfrdewsaqaqsqde");
final SecretKey key = new SecretKeySpec(digestOfPassword, "DESede");
final Cipher decipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
int blockSize = decipher.getBlockSize();
byte[] bArr = new byte[blockSize];
for (int i = 0; i < blockSize; i++) {
bArr[i] = (byte) 0;
}
decipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(bArr));
// final byte[] encData = new
// sun.misc.BASE64Decoder().decodeBuffer(message);
final byte[] plainText = decipher.doFinal(message);
return new String(plainText, "UTF-8");
}
public static byte[] m4427a(String str) throws IOException {
int i = 0;
int length = str.length() / 2;
byte[] bArr = new byte[length];
if (str.length() % 2 != 0) {
throw new IOException("hexadecimal string with odd number of characters");
}
int i2 = 0;
while (i < length) {
int i3 = i2 + 1;
i2 = "0123456789abcdef0123456789ABCDEF".indexOf(str.charAt(i2));
if (i2 == -1) {
throw new IOException("hexadecimal string contains non hex character");
}
int i4 = (i2 & 15) << 4;
i2 = i3 + 1;
bArr[i] = (byte) (("0123456789abcdef0123456789ABCDEF".indexOf(str.charAt(i3)) & 15) + i4);
i++;
}
return bArr;
}
private static byte[] m4430d(String str) throws Exception {
byte[] obj = new byte[24];
byte[] bytes = str.getBytes("UTF-8");
if (obj.length > bytes.length) {
System.arraycopy(bytes, 0, obj, 0, bytes.length);
} else {
System.arraycopy(bytes, 0, obj, 0, obj.length);
}
return obj;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment