代码之家  ›  专栏  ›  技术社区  ›  UnkwnTech

哈希比SHA1更好

  •  2
  • UnkwnTech  · 技术社区  · 15 年前

    我正在开发一个应用程序,我需要存储用户密码,所以我想我会将其存储在注册表的当前用户类中,但我也想对其进行散列,原因很明显,我看到一些新闻报道说SHA1已经被破解,在“标准”系统或.net中是否有更好的(未破解的)散列算法?

    6 回复  |  直到 15 年前
        1
  •  11
  •   Nisse Engström sting_roc    9 年前

    SHA1不是 encryption ,这是一个 cryptographic hash function

    但我建议每个条目使用自定义种子,以便 rainbow table 无法用于尝试密码。如果您使用的是SQL成员资格提供程序 password format "Hashed" 已为每个用户使用不同的种子。

    What You Need To Know About Secure Password Schemes 托马斯·普塔切克。

        2
  •  2
  •   David M    15 年前

    正如您在评论中所说,SHA1是一种哈希算法,而不是加密算法。这是一个单向函数,即使它已损坏,也不允许检索密码。

    SHA1上的碰撞攻击实际上还不能被利用,但你向前看是对的。鉴于这些攻击,NIST目前正在对SHA3进行筛选,但距离完工和商业验收还有几年时间。另一方面,SHA2是NIST标准化的现有算法家族,不受针对MD5和SHA1的成功攻击的影响。

        3
  •  1
  •   Richard Szalay    15 年前

    你需要做的是 salt sample code

    SHA1“被破解”的问题是,所有基本的可能组合都已预先计算,但盐渍会使您的密码变得不基本(如果密码较弱或容易猜测,它仍然容易受到暴力攻击,但会杀死彩虹表)

        4
  •  1
  •   Jesse C. Slicer    14 年前

    weakness 最近,这就是为什么NIST提供了 hashing contest 就像他们举办了一场加密比赛 Rijndael 如新 AES

    我个人喜欢什么 MD6 它是由罗恩·里维斯特(Ron Rivest)领导的,他已经在密码学领域工作了30多年。 MD6已经被撤回,所以我建议在第二轮中,我拙见的一些更强的候选人是凯卡、蓝色午夜愿望和赋格曲。

        5
  •  0
  •   Gavin Miller    15 年前

    是的,您可以使用SHA512,只需记住实际哈希的长度。您也可以通过对散列结果进行盐析来添加额外的安全性。

    SHA512("The quick brown fox jumps over the lazy dog") = 
       07e547d9 586f6a73 f73fbac0 435ed769 51218fb7 d0c8d788 a309d785 436bbb64
       2e93a252 a954f239 12547d1e 8a3b5ed6 e1bfd709 7821233f a0538f3d b854fee6
    

    如果你想研究其他哈希算法, here's a short list.

        6
  •  -5
  •   Nisse Engström sting_roc    9 年前

    晚了5天,但您可以尝试此高度安全的加密功能:

    uint64_t highly_secure_encrypt(char* password) {
      sleep(1);
      return 0;
    }
    

    你不可能从那得到密码。

    现在,我们来谈谈严肃的问题。如果你还不知道问题的答案,你就不应该设计安全系统。

    杰夫·阿特伍德酒店 "Rainbow Hash Cracking" 介绍了散列和密码存储在一个很好的初学者的细节,和托马斯Ptacek的 "Enough With the Rainbow Tables: What You Need to Know About Secure Password Schemes" 接着告诉你为什么你不应该试着自己去做。

    我建议多读一些,因为答案就在那里,很容易找到。