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 是散列函数。这意味着它们不能被逆转。1您会更幸运地查看标签name的该属性。file

1你可以2暴力破解它们,但由于它们可以将可变长度数据表示为固定长度的数据,由于鸽巢原理和简单的概率,你更有可能得到不是原始输入的东西比原来的输入。

2不过,SHA-1 需要很长时间。

于 2013-04-06T05:48:26.177 回答
1

哈希函数生成代表一些任意数据的数字。它们可以用来验证数据是否发生了变化(一个好的散列函数应该产生一个完全不同的散列,即使一个比特发生了变化)。

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

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

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

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

于 2013-04-06T06:22:51.530 回答