답변:
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은 현재 가장 인기있는 라이브러리 인 것 같습니다.
다음은 해싱 암호에 사용하는 방법의 예입니다.
[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 클래스도 확인할 수 있습니다 .