什么类型的哈希值,我可以使用比较运算符?

时间:2012-01-22 13:31:00

标签: javascript firefox hash firefox-addon operators

我正在开发一个firefox扩展,我想知道:

  1. 从字符串中获取哈希值后,该值的数据类型是什么?
  2. 我可以使用比较运算符吗?
  3. 所以我想做的是比较两个哈希值,看看是否有例如高于另一个。就像比较5 >= 4一样。这可能吗?处理像整数这样的哈希值?

2 个答案:

答案 0 :(得分:1)

MD5是最受欢迎的散列算法之一。它为您提供了一个字符串的十六进制数,可用于比较合理的安全性。对于JavaScript,您可以尝试crypto-js,但您可以轻松地在网上找到许多其他实现。

答案 1 :(得分: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)获取原始(二进制)哈希值。