[解決済み] 一見、空のファイルや文字列がmd5sumを生成するのはなぜですか?
2022-02-27 06:48:16
質問
次のように考えてください。
% md5sum /dev/null
d41d8cd98f00b204e9800998ecf8427e /dev/null
% touch empty; md5sum empty
d41d8cd98f00b204e9800998ecf8427e empty
% echo '' | md5sum
68b329da9893e34099c7d8ad5cb9c940 -
% perl -e 'print chr(0)' | md5sum
93b885adfe0da089cdf634904fd59f71 -
% md5sum ''
md5sum: : No such file or directory
まず、これらすべてのコマンドの出力に驚かされます。どちらかというと、どれも合計が同じになると思っていたのですが。
どのように解決するのですか?
"nothing"(長さ0の文字列)のmd5sumはd41d8cd98f00b204e9800998ecf8427eとなります。
3番目と4番目の例は、1文字を処理しています。echo"の場合は、改行、つまり、quot;echo"の場合は、改行です。
$ echo -ne '\n' | md5sum
68b329da9893e34099c7d8ad5cb9c940 -
perlの例では、値0x00の1バイト、すなわち
$ echo -ne '\x00' | md5sum
93b885adfe0da089cdf634904fd59f71 -
以下のように "echo" を使って、空のチェックサムを再現することができます。
$ echo -n '' | md5sum
d41d8cd98f00b204e9800998ecf8427e -
...そして、以下のようにPerlを使用します。
$ perl -e 'print ""' | md5sum
d41d8cd98f00b204e9800998ecf8427e -
この4つのケースでは、同じデータをチェックサムしても同じ出力が期待できますが、異なるデータではまったく異なるチェックサムが得られるはずです(それがポイントです。たとえそれが1文字だけの違いであっても)。
関連
-
[解決済み] c++で文字列をconst char[]に変換する方法
-
[解決済み] 一見、空のファイルや文字列がmd5sumを生成するのはなぜですか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] と'is'のどちらかを使って文字列を比較すると、異なる結果になることがあるのはなぜですか?
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
-
[解決済み] 文字列の一覧から空の文字列を削除する
-
[解決済み] 文字列がヌルでなく、空でないかをチェックする
-
[解決済み】NULL列を含む一意制約の作成
-
[解決済み】なぜ、Swiftの文字列では、?のような絵文字が奇妙に扱われるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】動的構造体参照の引数は、有効なフィールド名で評価する必要がある
-
[解決済み] 文字列を連結する方法を教えてください。
-
[解決済み] MIPSでの文字列の反復処理と修正
-
[解決済み] UTF-32とUCS-4の違いは何ですか?
-
[解決済み] ある文字列が他の文字列を含んでいるかどうかをチェックする
-
[解決済み] Goで複数行の文字列はどのように書くのですか?
-
[解決済み] デリミタによる文字列の分割
-
[解決済み] PowerShell 4.0を使用して変数入力からスペースを削除する
-
[解決済み] strconv.Atoi()で文字列を指定するとエラーが発生する。
-
[解決済み】文字列リテラルに対して文字列をマッチングさせる方法は?