2012-01-22 67 views
-1

我正在開發Firefox擴展,我想知道:散列值是什麼類型,我可以使用比較運算符嗎?

  1. 後,我從一個字符串中獲得的哈希值,什麼樣的數據類型是值?
  2. 我可以使用比較運算符嗎?

所以我想要做的是比較兩個哈希值,看看是否是例如高於其他。就像比較5 >= 4。這可能嗎?要像整數一樣處理散列值?

+1

你使用什麼編程語言? – 2012-01-22 13:32:01

+0

我正在爲mozila firefox創建一個擴展,所以它是javascript,但它使用(如果沒有錯誤的話)用C++編寫的類 – AndreiBogdan

+0

嗯,您可以訂購哈希值,但結果通常與您在排序時得到的順序不同散列的對象。爲什麼你想要訂購散列值? –

回答

1

MD5是最流行的哈希算法之一。它給你一個十六進制數字的字符串,可用於比較合理的安全。對於JavaScript,您可以嘗試crypto-js,但您可以在網上輕鬆找到許多其他實現。

1

在Firefox附加組件中,您應該使用nsICryptoHash。例如,如果你想使用MD5算法你可以使用下面的函數來哈希字符串:

function toMD5(str) 
{ 
    // Convert string to an array of bytes 
    var array = Array.prototype.slice.call(str); 

    // Create MD5 hash 
    var hashEngine = Components.classes["@mozilla.org/security/hash;1"] 
          .createInstance(Components.interfaces.nsICryptoHash); 
    hashEngine.init(hashEngine.MD5); 
    hashEngine.update(array, array.length); 
    return hashEngine.finish(true); 
} 

alert(toMD5("test")); // Displays: 8dP/hEMpdzKGLfIdxOVyYg== 

注意它返回base64編碼的哈希值。使用finish(false)來獲取原始(二進制)散列值。

相關問題