DES暗号解読とMD 5暗号解読アルゴリズム
DES暗号解読
MD 5暗号化
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
*
* DES , byte[],String String,byte[] .
*
* : void getKey(String strKey) strKey Key
*
* String getEncString(String strMing) strMing , String String
* getDesString(String strMi) strMin , String
*
* byte[] getEncCode(byte[] byteS)byte[] byte[] getDesCode(byte[]
* byteD)byte[]
*/
public class ThreeDES {
Key key;
/**
* KEY
*
* @param strKey
*/
public void getKey(String strKey) {
try {
KeyGenerator _generator = KeyGenerator.getInstance("DES");
_generator.init(new SecureRandom(strKey.getBytes()));
this.key = _generator.generateKey();
_generator = null;
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* String ,String
*
* @param strMing
* @return
*/
public String getEncString(String strMing) {
byte[] byteMi = null;
byte[] byteMing = null;
String strMi = "";
BASE64Encoder base64en = new BASE64Encoder();
try {
byteMing = strMing.getBytes("UTF8");
byteMi = this.getEncCode(byteMing);
strMi = base64en.encode(byteMi);
} catch (Exception e) {
e.printStackTrace();
} finally {
base64en = null;
byteMing = null;
byteMi = null;
}
return strMi;
}
/**
* String ,String
*
* @param strMi
* @return
*/
public String getDesString(String strMi) {
BASE64Decoder base64De = new BASE64Decoder();
byte[] byteMing = null;
byte[] byteMi = null;
String strMing = "";
try {
byteMi = base64De.decodeBuffer(strMi);
byteMing = this.getDesCode(byteMi);
strMing = new String(byteMing, "UTF8");
} catch (Exception e) {
e.printStackTrace();
} finally {
base64De = null;
byteMing = null;
byteMi = null;
}
return strMing;
}
/**
* byte[] ,byte[]
*
* @param byteS
* @return
*/
private byte[] getEncCode(byte[] byteS) {
byte[] byteFina = null;
Cipher cipher;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
/**
* byte[] , byte[]
*
* @param byteD
* @return
*/
private byte[] getDesCode(byte[] byteD) {
Cipher cipher;
byte[] byteFina = null;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byteFina = cipher.doFinal(byteD);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
public static void main(String[] args) {
ThreeDES des = new ThreeDES();//
des.getKey("daliantan0v0");//
System.out.println("================= ==================================");
String strEnc = des.getEncString("wuzhaohui");// , String
System.out.println(strEnc);
String strDes = des.getDesString("/RubFP0okb6u6s2INMttNQ==");// String
System.out.println(strDes);
System.out.println("================== =================================");
/*
byte[] getEncCode(byte[] byteS)byte[] byte[] getDesCode(byte[]
* byteD)byte[]
*/
}
}
テスト結果: ================= ==================================
/RubFP0okb6u6s2INMttNQ==
wuzhaohui
================== =================================
MD 5暗号化
package MD5;
import java.security.MessageDigest;
public class MD5andKL {
// MD5 。32
public static String MD5Encode(String inStr) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
return "";
}
char[] charArray = inStr.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++)
byteArray[i] = (byte) charArray[i];
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
//
public static String KL(String inStr) {
// String s = new String(inStr);
char[] a = inStr.toCharArray();
for (int i = 0; i < a.length; i++) {
a[i] = (char) (a[i] ^ 't');
}
String s = new String(a);
return s;
}
//
public static String MD5DecCode(String inStr) {
char[] a = inStr.toCharArray();
for (int i = 0; i < a.length; i++) {
a[i] = (char) (a[i] ^ 't');
}
String k = new String(a);
return k;
}
//
public static void main(String args[]) {
String s = new String("a");
System.out.println(" :" + s);
System.out.println("MD5 :" + MD5Encode(s));
System.out.println("MD5 :" + KL(MD5Encode(s)));
System.out.println(" MD5 :" + MD5DecCode(KL(MD5Encode(s))));
}
}
テスト結果: オリジナル:aMD5 :0cc175b9c0f1b6a831c399e269772661
MD5 :DECAMDEBLGEGMMFBMCCFBBE
MD5 :0cc175b9c0f1b6a831c399e269772661