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

bcrypt的.net实现

  •  111
  • Gareth  · 技术社区  · 17 年前

    有谁知道bcrypt的良好实现吗?我知道以前有人问过这个问题,但得到的答复很少。我有点不确定是否只是选择了一个在google上出现的实现,我认为在System.Security.Cryptography名称空间中使用sha256可能会更好,至少我知道它是受支持的!你有什么想法?

    6 回复  |  直到 15 年前
        1
  •  58
  •   Mike Weller    17 年前

    听起来你在找我 BCrypt.net :

    OpenBSD基于河豚的密码 散列代码,如“A”中所述 “未来自适应密码方案” 尼尔斯·普罗沃斯和大卫·马兹·雷斯。的确如此 Damien提供的jBCrypt的直接端口 米勒,并因此根据 相同的BSD样式许可证。代码是 全面管理,并应与任何 little-endian CLI实现——it 还有单声道。

        2
  •  25
  •   Maksym Kozlenko    13 年前

    目前,BCrypt.Net似乎是最受欢迎的图书馆

    http://bcrypt.codeplex.com/

    下面是一个如何使用它对密码进行哈希运算的示例:

    [TestMethod]
        public void BCryptTest()
        {
            const string password = "PASSWORD";
            const int workFactor = 13;
    
            var start = DateTime.UtcNow;
            var hashed = BCrypt.Net.BCrypt.HashPassword(password, workFactor);
            var end = DateTime.UtcNow;
    
            Console.WriteLine("hash length is {0} chars", hashed.Length);
            Console.WriteLine("Processing time is {0} with workFactor {1}", end - start, workFactor);
            Console.WriteLine("Hashed password: {0} ", hashed);
            Console.WriteLine("correct password {0}", BCrypt.Net.BCrypt.Verify("PASSWORD", hashed));
            Console.WriteLine("incorrect password {0}", BCrypt.Net.BCrypt.Verify("PASSWORd", hashed));
        }
    

    样本输出:

    hash length is 60 chars
    Processing time is 00:00:01.0020000 with workFactor 13
    Hashed password: $2a$13$iBqdG7ENBABEargiyzGlTexPsmviF/qrFxUZB2zce7HKF6MoBNhEq 
    correct password True
    incorrect password False
    
        3
  •  23
  •   Ryan Emerle    15 年前
        4
  •  6
  •   James    15 年前

    在将某些东西从PostgreSQL(具有pg_加密)移动到SQLite(不具有pg_加密)时,我需要一个BCrypt实现,所以我编写了自己的。从这条消息来看,我不是唯一一个需要这个的人,我决定给它贴上许可证并发布它。网址是:

    http://zer7.com/software.php?page=cryptsharp

    它背后的Blowfish实现是Bruce Schneier的公共域C实现的一个端口,并在所有官方测试向量上成功。

    该库还包括适用于任何HMAC的PBKDF2代码,而不是.Net的SHA-1-only实现(今天添加的——我打算很快在C#soon中执行SCrypt,这需要PBKDF2和HMAC-SHA256)。如果你愿意的话,你也可以以此为基础制定一个计划。

        5
  •  0
  •   Ioanna    7 年前

    回答错误,请看下面

    Net框架中的所有“Cng”(加密新一代)后固定算法现在都使用bcrypt。例如。 SHA256Cng .



    不会删除答案,以防万一其他人也有同样的困惑。

        6
  •  -2
  •   Deb    11 年前

    你试过这个吗 MS BCryptCreateHash C++ function

    此外,您可能还可以检查以下内容 MS C# BCryptNative.cs

    推荐文章