私はmd5に関するいくつかのドキュメントを読んで、128ビットと言っていましたが、なぜ32文字ですか?文字を計算できません。
編集:
SHA-1は160ビットを生成するので、文字数はいくつですか?
16進表現として32文字、つまり1バイトあたり2文字。
回答の一部を1つの投稿にまとめたいと思いました。
まず、MD5ハッシュを文字列としてではなく、16進数として考えないでください。したがって、各桁は16進数(0〜15または0〜F)であり、8ビットではなく4ビットを表します。
さらに、1バイトまたは8ビットは2桁の16進数で表されます。 b '1111 1111
'= 0xFF
= 255
。
MD5ハッシュの長さは128ビットで、一般に32桁の16進数で表されます。
SHA-1ハッシュは長さが160ビットで、一般に40桁の16進数で表されます。
SHA-2ファミリの場合、ハッシュの長さは事前に設定されたセットの1つになると思います。したがって、SHA-512は128桁の16進数で表すことができます。
繰り返しますが、この投稿は以前の回答に基づいています。
ビット対バイト、対文字を明確にするため。
2**8
_可能な組み合わせを提供します:256の組み合わせ16進文字を見ると、
[0-9] + [a-f]
_の16の組み合わせ:_0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
_の全範囲2**4
_です。これは、1つの16進文字が1バイト(4バイト)に4ビットを格納できることを意味します。2**8
_の組み合わせを格納できます。[0-9a-f][0-9a-f]
_であり、バイトの半分を表します(ハーフバイトを nibble と呼びます)。通常のシングルバイト文字を見ると、(ここではマルチバイト文字とワイド文字を完全にスキップします)
2**8
_の範囲全体を取ります。md5()
の16進文字がすべてを格納できる場合、すべての小文字、すべての大文字、すべての句読点、および_¡°ÀÐàð
_のようなもの、空白のような(改行、およびタブ)、および制御文字(表示することさえできず、その多くは使用されていません)。したがって、それらは明らかに異なっており、それが違いの最良の内訳を提供することを願っています。
MD5は16進数(0〜15/0〜F)を生成するため、それぞれ4ビットです。 128/4 = 32文字。
SHA-1は16進数字(0-15/0-F)も生成するため、160/4 = 40文字です。
(それらは数学演算であるため、ほとんどのハッシュ関数の出力は通常16進数で表されます。)
おそらくASCII 8ビットのテキスト文字を考えていたでしょう。
これは32桁の16進文字です-1つの16進文字は4ビットです。
これらは文字ではなく16進数です。 1桁= 4ビット。
実際には文字ではなく、16進数です。