0

md5、crc32、および sha1 をデコードするにはどうすればよいですか。以下は xml ファイルであり、これまでにデータを取得するために使用しているコードです。

<files>
  <file name="AtTheInn-Germany-Morrow78Collection.mp3" source="original">
    <format>VBR MP3</format>
    <title>At the Inn - Germany - Morrow 78 collection</title>
    <md5>056bbd63961450d9684ca54b35caed45</md5>
    <creator>Germany</creator>
    <album>Morrow 78 collection</album>
    <mtime>1256879264</mtime>
    <size>2165481</size>
    <crc32>22bab6a</crc32>
    <sha1>796fccc9b9dd9732612ee626c615050fd5d7483c</sha1>
    <length>179.59</length>
  </file>

そして、これは私がタイトルとアルバム名を取得するために使用しているコードです。sha1 と md5 を理解するにはどうすればよいですか。

<?php
    $search = $_GET['sku'];
    $catalogfile = $_GET['file'];
        $directory = "feeds/";
        $xmlfile = $directory . $catalogfile;
$xml = simplexml_load_file($xmlfile);

list($product) = $xml->xpath("//file[crc32 = '$search']");
echo "<head>";
echo "<title>$product->title</title>";
4

2 に答える 2

3

MD5、SHA-1、CRC32 はハッシュ関数です。つまり、元に戻すことはできません。1nameタグのその属性を調べると、運が良くなりますfile

1当たり攻撃を行うことはできますが、可変長データを固定長データとして表すことができるため、ピジョンホールの原理と単純な確率により、元の入力ではないものを取得する可能性が高くなります。元の入力よりも。

2ただし、SHA-1 の場合は永遠にかかります。

于 2013-04-06T05:48:26.177 に答える
1

ハッシュ関数は、任意のデータを表す数値を生成します。それらを使用して、データが変更されたかどうかを確認できます (優れたハッシュ関数は、1 ビットが変更された場合でもまったく異なるハッシュを生成する必要があります)。

情報を失う結果として任意の量のデータを数値に変換しているため、これはそれらを元に戻すのが難しいことを意味します。技術的には、データの長さに制限がないため、ハッシュの結果は無限にあります。データサイズが制限されている場合でも、特定のハッシュに対して複数のデータ値が存在する可能性があります。これは衝突と呼ばれます。

一部のデータ セット (パスワードなど) では、データの可能なすべての組み合わせを生成し、それらがハッシュに一致するかどうかを確認できます。チェックと同時に生成を行うと、「ブルート フォーシング」と呼ばれます。また、すべての可能な組み合わせ (限られた範囲、たとえば、すべての辞書作品または特定のサイズ以下の文字のすべての組み合わせ) を保存してから、それを検索することもできます。これはレインボー テーブルとして知られており、複数のハッシュを元に戻すのに役立ちます。

パスワードをプレーンテキストではなくハッシュとして保存することをお勧めしますが、パスワードを元に戻すのが困難であることを確認するために、パスワードごとに少しランダムなデータを追加し、パスワードと共に保存します。これはソルティングとして知られています。このソルトは、パスワードをブルート フォースするのにはるかに長い時間がかかることを意味します。

この場合、ファイルの整合性を検証し、転送 (または保存) 中に発生した破損を示すために指定された mp3 ファイルのハッシュである可能性があります。メガバイトのデータのすべての可能な組み合わせを生成する必要があるため、それらを元に戻すことはできません。ただし、ファイル自体がある場合は、理由もありません。チェックサム生成プログラムを実行することで、ファイルのハッシュであることを確認できます。

于 2013-04-06T06:22:51.530 に答える