日期:2014-05-20 浏览次数:21199 次
import java.security.MessageDigest;
public class Test {
private final static char[] HEX = "0123456789abcdef".toCharArray();
public static void main(String[] args) throws Exception {
MessageDigest digest = MessageDigest.getInstance("md5");
byte[] bys = digest.digest("123456".getBytes("UTF-8"));
// MD5 摘要的字节长度
System.out.println("我是 123456 MD5 摘要后的字节个数:" + bys.length);
// 看看 123456 MD5 摘要的十六进制值是什么
System.out.println("我是 123456 MD5 摘要的 16 进制表示:" + toHex(bys));
// 获得 int 类型的秒还不简单么?
int seconds = (int)(System.currentTimeMillis() / 1000);
System.out.println("我就是自 Unix 纪元以来经过的秒数:" + seconds);
}
public static String toHex(byte[] bys) {
if (bys == null) {
return null;
}
char[] chs = new char[bys.length * 2];
for (int i = 0, k = 0; i < bys.length; i++) {
chs[k++] = HEX[(bys[i] & 0xf0) >> 4];
chs[k++] = HEX[bys[i] & 0xf];
}
return new String(chs);
}
}
------解决方案--------------------
第一个问题有32个字符有64个字节,你才给出16个字节,好装不下,
第一个问题获取时间后,再除以1000,(再试试强制转为int,如果实在太long了,好像也没办法了)