[.net] bcrypt의 .net 구현

누구든지 bcrypt의 좋은 구현을 알고 있습니까?이 질문이 이전에 요청되었지만 응답이 거의 없다는 것을 알고 있습니다. 나는 Google에서 나타나는 구현을 선택하는 데 약간 확신이 없으며 System.Security.Cryptography 네임 스페이스에서 sha256을 사용하는 것이 더 나을 것이라고 생각하고 있습니다. 적어도 지원된다는 것을 압니다! 당신의 생각은 무엇입니까?



답변

BCrypt.net을 찾는 것 같습니다 .

BCrypt.net은 Niels Provos와 David Mazières의 “A Future-Adaptable Password Scheme”에 설명 된 OpenBSD의 Blowfish 기반 암호 해싱 코드의 구현입니다. Damien Miller에 의해 jBCrypt의 직접 포트이므로 동일한 BSD 스타일 라이센스로 릴리스됩니다. 코드는 완전히 관리되며 모든 리틀 엔디안 CLI 구현에서 작동해야합니다. Microsoft .NET 및 Mono로 테스트되었습니다.


답변

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


답변

.Net 용 BCrypt의 업데이트 된 구현은 http://bcrypt.codeplex.com/ 에서 찾을 수 있습니다.


답변

PostgreSQL (pg_crypto 포함)에서 SQLite (없음)로 이동할 때 BCrypt 구현이 필요했기 때문에 직접 작성했습니다. 이 메시지를보고 나는 이것을 필요로하는 유일한 사람이 아니다. 나는 그것에 라이선스를 박아 풀어 놓기로 결정했다. URL은 다음과 같습니다.

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

그 뒤에있는 Blowfish 구현은 Bruce Schneier의 공용 도메인 C 구현 포트이며 모든 공식 테스트 벡터에서 성공합니다.

사양에 따라 직접 작성한 BCrypt 코드입니다. 나는 또한 길이가 0에서 100 사이의 임의의 암호와 솔트를 생성하고 암호화하여 테스트 파일로 출력하는 PHP 스크립트를 만들었습니다. C # 코드는 지금까지 100 % 일치합니다. 스크립트를 사용하고 직접 테스트 할 수 있습니다.

이 라이브러리에는 .Net의 SHA-1 전용 구현과는 반대로 모든 HMAC에서 작동하는 PBKDF2 코드도 포함되어 있습니다 (오늘 추가됨-곧 C #에서 SCrypt를 수행 할 예정이며 HMAC-SHA256과 함께 PBKDF2가 필요함). 원한다면 이것에 기초한 계획을 만들 수도 있습니다.


답변

오답입니다. 아래를 참조하세요.

.Net Framework의 모든 “Cng”(Cryptography Next Generation) 후위 알고리즘은 이제 bcrypt를 사용합니다. 예 : SHA256Cng .


실제로 MS BCrypt (BestCrypt)는 Blowfish 암호를 기반으로 한 것을 참조하지 않습니다. 코멘트에 대해 감사합니다. RobbyD.
다른 사람이 같은 혼동을하는 경우를 대비하여 답변을 삭제하지 않습니다.


답변

MS BCryptCreateHash C ++ 함수 를 사용해 보셨습니까 ?? Windows Server 2008 및 Windows Vista에서 제공되는 것 같습니다.

또한 아마도 다음 MS C # BCryptNative.cs 클래스도 확인할 수 있습니다 .


답변