2012-11-03 186 views
1

如何使用MD5算法檢測兩個字符串之間的微小差異?我想找到幾個大字符串之間的相似百分比。至於如何我可以檢查不同,因爲:MD5散列函數

MD5("The quick brown fox jumps over the lazy dog.") 
= e4d909c290d0fb1ca068ffaddf22cbd0 

MD5("The quick brown fox jumps over the lazy dog") 
= 9e107d9d372bb6826bd81d3542a419d6 

你能給我一個解決方案,這個還是給我,可以有效地在大型字符串或大型文檔,可以使用其他哈希算法?

+2

尋找*相似的東西*不是MD5或任何散列函數的工作。所有好的散列函數都有意放大小的差異,因爲它們的目標是減少衝突。你想要的是一個通常被稱爲「編輯距離」的度量,這意味着將一個字符串轉換爲另一個字符串所需的單個編輯的數量。 –

回答

0

如果字符串非常長(如整個文件或大型文件),則可以將它們拆分成碎片,然後散列碎片,然後檢查多少匹配。但這並不完全可靠。

如果說兩個字符串中的大部分是相同的,那可能是準確的。除非你做了很多工作來保持同步,否則當兩者差不多相同時,它可能表明有很大的差異。舉個例子,如果你天真地做,在一個字符串的開頭插入一個字節可以表明這些字符串是完全不同的,儘管實際上只有一個字節是不同的。