【问题标题】:how to create md5 in java with specified character set and specifed length of md5 string?java - 如何在Java中创建具有指定字符集和指定长度的md5字符串的md5?
【发布时间】:2012-11-14 18:21:38
【问题描述】:

有什么方法可以为给定的字符串创建 md5,md5 应该只有指定的字符,比如只有字母数字,md5 的长度也应该使用 java 定义的编码器。

示例:

假设这个问题的文本是一个用于制作 md5 的字符串,并且它具有“//:\ #$%^&*!()_-=+|”这个测试开始和结束时的这些字符我需要一个 md5 之类的。

预期输出:

sdki544k54353453(只有字母数字的 16 长字符串)

【问题讨论】:

  • 您能提供任何示例输入和输出吗?
  • 我看了这篇文章,但我的问题是我怎样才能找到只有字母数字和指定长度的 md5,在​​我的情况下说 16

标签: java md5


【解决方案1】:

有什么方法可以为给定的字符串创建一个 md5

第一个问题:您需要定义要使用哪种编码将字符串转换为字节。 MD5 适用于二进制 数据,而不是文本。因此,您需要将字符串转换为字节,然后对其进行散列,这将为您返回 16 个字节作为散列。

那个 md5 应该只有指定的字符说只有字母数字

嗯,如果你想节省一点空间,那最容易用十六进制或 base32 完成。

md5 的长度也应该用 java 定义

二进制散列数据的大小是固定的 - MD5 总是 产生 128 位(16 字节)。如果你想减少长度,你可能需要截断数据(这会降低哈希的效率)。当然,如果你想要的长度比它需要的长,你只需要填充它。

16 字节将在十六进制中编码为 32 个字符,或者在 base32 中编码为 26 个字符。 Base64 只需要 22 个字符,但至少需要两个非字母数字字符。 (数字 + a-z + A-Z 给出 62 个字符;base64 需要 64 - 通常加上一个填充字符,但如果您事先知道长度,则可以省略。)

如果您能更详细地解释您的要求,我们或许可以提供更多帮助 - 但基本上 MD5 是一个固定大小的哈希。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多