怎么能编码出“87D9BB400C0634691F0E3BAAF1E2FD0D”这个结果?
5 个解决方案
#1
能从这么字符串反推回去,那加密不就没有意义了?
#2
import java.security.MessageDigest;
import sun.misc.BASE64Encoder;
public class Md5 {
public String str;
public void md5s(String plainText) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
str = buf.toString();
System.out.println(buf.length() + " result: " + buf.toString());// 32位的加密
System.out.println("result: " + buf.toString().substring(8, 24));// 16位的加密
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String agrs[]) throws Exception {
final String s = "123456";
String s1 = java.net.URLEncoder.encode(s, "utf-8");
BASE64Encoder b = new BASE64Encoder();
String s2 = b.encode(s1.getBytes());
// System.out.println(s2);
Md5 m = new Md5();
m.md5s(s2);
}
}
其实不用utf-8转换
结果一样
打出来的32位就是,不过都是小写
#3
有什么问题吗?
#4
不是要反推,认真看题啊
#5
谢谢yaoweijq
我就一直玩不明白这些encode操作
我就一直玩不明白这些encode操作
#1
能从这么字符串反推回去,那加密不就没有意义了?
#2
import java.security.MessageDigest;
import sun.misc.BASE64Encoder;
public class Md5 {
public String str;
public void md5s(String plainText) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
str = buf.toString();
System.out.println(buf.length() + " result: " + buf.toString());// 32位的加密
System.out.println("result: " + buf.toString().substring(8, 24));// 16位的加密
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String agrs[]) throws Exception {
final String s = "123456";
String s1 = java.net.URLEncoder.encode(s, "utf-8");
BASE64Encoder b = new BASE64Encoder();
String s2 = b.encode(s1.getBytes());
// System.out.println(s2);
Md5 m = new Md5();
m.md5s(s2);
}
}
其实不用utf-8转换
结果一样
打出来的32位就是,不过都是小写
#3
有什么问题吗?
#4
不是要反推,认真看题啊
#5
谢谢yaoweijq
我就一直玩不明白这些encode操作
我就一直玩不明白这些encode操作