0

与えられた文字列に対してmd5を作成する方法はありますが、md5には英数字のみを指定した文字のみを含める必要があります。また、md5の長さはjavaを使用してコーダーで定義する必要があります。

例:

この質問のテキストがmd5を作成するための文字列であり、「//:\#$%^&*!()_- =+|」があるとします。このテストの開始時と終了時のこれらの文字は、md5のようなものである必要があります。

期待される出力:

sdki544k54353453(英数字のみの16の長さの文字列)

4

1 に答える 1

3

与えられた文字列のmd5を作成する方法はありますか

最初の問題:文字列をバイトに変換するために使用するエンコーディングを定義する必要があります。MD5は、テキストではなくバイナリデータで機能します。したがって、文字列をバイトに変換してからハッシュする必要があります。これにより、ハッシュとして16バイトが返されます。

md5には、英数字のみを指定した文字のみを含める必要があります

さて、それは16進数で、または少しスペースを節約したい場合はbase32で最も簡単に実行できます。

また、md5の長さは、Javaを使用してコーダーで定義する必要があります

バイナリハッシュデータのサイズは固定されています-MD5は常に128ビット(16バイト)を生成します。長さを短くしたい場合は、データを切り捨てる必要がある可能性があります(これによりハッシュの効果が低下します)。もちろん、希望の長さが必要以上に長い場合は、パッドを入れるだけです。

16バイトは、16進数で32文字として、またはbase32で26文字としてエンコードされます。Base64に必要なのは22文字だけですが、それには少なくとも2文字の英数字以外の文字が必要です。(数字+ az + AZは62文字を提供します。base64には64文字が必要です。通常はプラス文字が追加されますが、長さが事前にわかっている場合は省略できます。)

要件をより詳細に説明できれば、さらに支援できる可能性がありますが、基本的にMD5は固定サイズのハッシュです。

于 2012-11-27T07:07:48.017 に答える