2013-04-06 77 views
0

如何解碼md5,crc32和sha1,下面是xml文件,然後是我用於獲取數據的代碼。sha1,crc32和md5如何讀取這些數據?

<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>"; 
+0

你知道[哈希](http://en.wikipedia.org/wiki/Hash_function)嗎? – sectus 2013-04-06 05:47:21

+0

不,我不知道,我現在正在閱讀它,雖然 – 2013-04-06 05:59:33

回答

1

散列函數生成的數字代表一些任意的數據。它們可以用來驗證數據是否已經改變(一個好的散列函數應該產生一個完全不同的散列,即使一個位已經改變了)。

由於您正在轉換數字中的任意數量的數據,導致信息丟失,這意味着很難將其轉換。從技術上講,對於散列來說,可能會有無數的結果,因爲數據可以是任意長度的。對於有限的數據大小,它仍然有可能存在特定散列的多個數據值,這稱爲衝突。

對於某些數據集(例如密碼),您可以生成所有可能的數據組合,並檢查它們是否與散列匹配。如果你在檢查它的同時進行這一代,它被稱爲「暴力強制」。您還可以存儲所有可能的組合(對於有限的範圍,例如所有字典作品或特定尺寸下的所有字符組合),然後查看它們。這被稱爲彩虹表,對於反轉多個哈希非常有用。

將密碼存儲爲散列而不是純文本是很好的做法,但爲了確保密碼難以反轉,他們向每個密碼添加一些隨機數據並將其與密碼一起存儲,這就是所謂的鹽析。這種鹽意味着暴力破解密碼需要更長的時間。

在這種情況下,它們可能是指定用於驗證文件完整性並顯示傳輸(或存儲)期間發生的任何損壞的mp3文件的哈希。由於您必須生成兆字節數據的所有可能組合,因此無法反轉它們。但是如果你有文件本身,那也不會有任何理由。您可以通過運行校驗和生成程序來確認它們是文件的哈希值。

+0

非常感謝,這是我正在尋找的答案。 – 2013-04-06 06:38:41

3

MD5, SHA-1和CRC32是散列函數。這意味着它們不可逆轉。 你會有更多的運氣看着file標籤的name屬性。

可以蠻力強迫他們,而是因爲他們可以代表可變長度的數據作爲固定長度的數據塊,因鴿巢原理,只是普通的概率,你就更有可能得到的東西是而不是原始輸入比原來的輸入。

儘管如此,SHA-1將會永遠耗盡。

+0

因此,簡單來說,你認爲這些sha1或md5中是否有任何有用的信息存儲,或者他們只是出於某些其他原因?我猜這裏有url或者作者 – 2013-04-06 05:54:29

+0

@KhushwantSingh:他們讓你確認你在別處下載的文件沒有被破壞。 – icktoofay 2013-04-06 05:55:31