sha1,crc32和md5如何读取这些数据?

时间:2013-04-06 05:45:09

标签: php xml md5 sha1 crc32

如何解码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>";

2 个答案:

答案 0 :(得分:3)

MD5,SHA-1和CRC32是哈希函数。这意味着它们无法逆转。 1 您可以更好地查看name标记的file属性。

1 你可以 2 强制它们,但由于它们可以将可变长度数据表示为固定长度的数据,因为它具有鸽子原理和只是简单的概率,你更有可能获得原始输入的东西。

2 但是,SHA-1需要永远。

答案 1 :(得分:1)

哈希函数生成代表某些任意数据的数字。它们可用于验证数据是否已更改(即使单个位已更改,良好的散列函数也应生成完全不同的散列)。

由于您在数字中转换任意数量的数据而导致信息丢失,这意味着很难将其反转。从技术上讲,哈希有无数可能的结果,因为数据可以是任何长度。对于有限的数据大小,仍然可能存在特定散列的多个数据值,这称为冲突。

对于某些数据集(例如密码),您可以生成所有可能的数据组合,并检查它们是否与哈希匹配。如果您在检查的同时进行生成,则称为“暴力破解”。您还可以存储所有可能的组合(对于有限的范围,例如所有字典作品或特定大小的所有字符组合),然后查找它。这被称为彩虹表,可用于反转多个哈希值。

将密码存储为哈希而不是纯文本是一种好习惯,但为了确保密码难以反转,他们会为每个密码添加一些随机数据并将其与密码一起存储,这称为salting。这种盐意味着暴力破解密码需要更长的时间。

在这种情况下,它们可能是指定用于验证文件完整性并显示在传输(或存储)期间发生的任何损坏的mp3文件的哈希值。由于您必须生成所有可能的兆字节数据组合,因此无法对其进行反转。但是如果你有文件本身就没有任何理由。您可以通过在其上运行校验和生成程序来确认它们是文件的哈希值。