0

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

例子:

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

预期输出:

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

4

1 回答 1

3

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

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

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

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

md5 的长度也应该使用 java 定义

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

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

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

于 2012-11-27T07:07:48.017 回答