【问题标题】:How to represent the top 8 bytes of the MD5 hash of the bytes of the given String's UTF-8 encoding as a long in java?java - 如何在java中将给定String的UTF-8编码字节的MD5哈希的前8个字节表示为long?
【发布时间】:2009-12-11 20:27:34
【问题描述】:

java中如何将给定String的UTF-8编码字节的MD5哈希的前8个字节表示为long?

【问题讨论】:

    标签: java byte


    【解决方案1】:

    试试这个:

    MessageDigest md5 = MessageDigest.getInstance("MD5");
    byte[] digest = md5.digest("Wallace".getBytes("UTF-8"));
    long result = ByteBuffer.wrap(digest).getLong();
    

    【讨论】:

    • 嘘!对 API 的了解胜过对位旋转的了解。 +1
    【解决方案2】:
    public static void main(final String[] args) throws Exception
    {
        final MessageDigest md5 = MessageDigest.getInstance("MD5");
        final byte[] digest = md5.digest("Grommit".getBytes("UTF-8"));
        long result = 0;
        for (int i = 0; i < 8; i++)
        {
            System.out.println(Long.toHexString(0xFFL & digest[i]));
            result |= (0xFFL & digest[i]) << (i * 8);
        }
        System.out.println(Long.toHexString(result));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 2023-01-16
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多