md5基于java中的设备时间

时间:2014-05-07 11:32:28

标签: java calendar md5

我正在尝试根据系统时间的舍入值计算哈希值,以便我有时间在另一台设备上输入值并检查它是否是相同的哈希值。当我运行代码时,它向我显示localTime变量具有相同的值,但我得到了摘要的不同值,并且无法找出原因。

public static String getTime()
{

    String localTime = "";

    Calendar cal = Calendar.getInstance();

    long mins = cal.getTimeInMillis()/10000;

    localTime = Long.toString(mins);
    System.out.println(localTime);
    byte [] digest = null;
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");

        md.update(localTime.getBytes());
        digest = md.digest();
        md.reset();

    } catch (NoSuchAlgorithmException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return digest.toString();

}

1 个答案:

答案 0 :(得分:1)

问题是最后一行。如果返回digest.toString(),则返回字节数组的字符串表示形式(类似于[B@12345678])。如果您真的想从String构建byte[],我强烈建议您对阵列进行Base64编码:

return new String(Base64.encode(digest));

你会发现Base64是Java8的一部分,如果你使用旧的东西,你会在Apache编解码器,Spring utils等中找到它......