加密类private static final String Algorithm = "DESede"; // 定义 加密算法,可用
// DES,DESede,Blowfish // keybyte为加密密钥,长度为24字节
// src为被加密的数据缓冲区(源)
public static byte[] encryptMode(byte[] keybyte, byte[] src) {
try {
// 生成密钥
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); // 加密
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.ENCRYPT_MODE, deskey);
return c1.doFinal(src);
} catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
} catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
} public static byte[] fdsfds(byte[] keybyte, byte[] src) {
try {
// 生成密钥
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); // 解密
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.DECRYPT_MODE, deskey);
return c1.doFinal(src);
} catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
} catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
} // 转换成十六进制字符串
public static String byte2hex(byte[] b) {
String hs = "";
String stmp = ""; for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
if (n < b.length - 1)
hs = hs + ":";
}
return hs.toUpperCase();
} // 将byte[]转换成字符串
public static String bytetoString(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toString(b[n]));
hs = hs + stmp;
if (n < b.length - 1)
hs = hs + ".";
}
return hs;
} // 字符串转换成byte[]
public static byte[] StringtoByte(String s) {
String[] array;
byte b[];
StringTokenizer string_s = new StringTokenizer(s, ".");
array = new String[string_s.countTokens()];
b = new byte[string_s.countTokens()];
int i = 0;
while (string_s.hasMoreTokens()) {
b[i] = Byte.parseByte(string_s.nextToken());
i++;
}
return b;
} public static String sssse(String encodedString, String keyString) {
String szSrc = "";
try {
byte[] keyBytes = keyString.getBytes();
byte[] encoded = StringtoByte(encodedString);
// byte[] encoded= encodedString.getBytes("iso-8859-1");
byte[] srcBytes = fdsfds(keyBytes, encoded);
szSrc = new String(srcBytes);
} catch (Exception e) {
e.printStackTrace();
}
return szSrc;
} public static void main(String[] args) {
System.out
.println(QQ
.sssse(
new String(
Qct
.dq(new String(
"LTE2LjkzLi0xMTAuLTI5Li03Mi4tNzkuLTIuODYuMTI0LjEwNS4tMTI0Li0zMi4tMy40NS4tNjYuNjkuODUuLTkxLjg0Li01MS4xMTYuNDEuMTA2Li00Mi40NS40Ni4tMTA1Li0xMDcuNjIuLTQxLi03MS4tNTI=")))
.toString(), MyConstant.KEYSTRING)); }}// end class其中
MyConstant.KEYSTRING的内容是"我是密钥我是密钥我是密钥"
麻烦高手解释一下这段代码,最后帮我写段程序,如何根据加密后的字符串还原到明文,例如.dq(new String(
"LTEwMy4xMjEuLTEyMi4tMTE2LjExOC45OS4xMjEuLTg4Ljk1LjY5LjExMC4tMTA1LjEwMS4xMy4yOS4tNjEuLTEyMS45MS45MC4xMTMuMjEuMTA3Li0xMTAuNjk=")))
.toString(), MyConstant.KEYSTRING);

解决方案 »

  1.   

    架构师交流群:43545919,已经上传google 、 eBay、Youtube等顶级软件产品的架构分析!资料陆续上传中。
    达到人数后开始培训!欢迎加入探讨!
    =============================================
    3月26日《企业应用架构模式》pdf 系列书籍已经上传至群共享,欢迎下载!也欢迎大家踊跃到群里提问题,回答问题。回答问题多者可以得到群主的奖励阿!
      

  2.   

    很想帮你但是你的程序没有没尾的,Qct是什么class?dq是什么method?
    你把程序贴齐了吧。