문제

저는 Windows 기반 Subversion을 사용하고 있으며 Apache 암호 파일 작업을 위해 .NET에서 쉬운 유틸리티를 작성하고 싶습니다.MD5Crypt라는 함수를 사용한다는 것을 이해하지만 어느 시점에서는 MD5를 사용하여 해시를 생성하는 것 이상의 알고리즘에 대한 설명을 찾을 수 없는 것 같습니다.

누군가 MD5Crypt 알고리즘과 비밀번호 줄 형식을 설명할 수 있습니까?

도움이 되었습니까?

해결책

sha256 및 sha512와 함께 사용하기 위해 업데이트된 암호화 알고리즘에 대한 정확한 텍스트 설명은 다음을 참조하세요. http://www.akkadia.org/drepper/SHA-crypt.txt

여기에는 MD5 알고리즘과의 대비가 포함되어 있으므로 원하는 것을 제공해야 합니다.

다른 팁

md5crypt 구현은 다음에서 찾을 수 있습니다. tcllib 패키지. 다운로드는 다음에서 가능합니다. 소스포지.

Apache 호환 md5crypt의 예는 다음에서 찾을 수도 있습니다. CAS 일반 처리기의 소스 코드

MD5Crypt는 기본적으로 구식 Unix 암호화 기능을 대체합니다.이는 freebsd에서 소개되었으며 다른 그룹에서도 채택되었습니다.

기본 아이디어는 다음과 같습니다.

  • 해시는 비밀번호를 저장하는 좋은 방법입니다
    • 사용자가 입력한 비밀번호를 가져와서 해시합니다.
    • 저장된 해시와 비교
    • 해시가 동일하면 비밀번호가 일치합니다.

하지만 문제가 있습니다.

  • 당신이 비밀번호 "jeff"를 선택하고 나도 비밀번호 "jeff"를 선택한다고 가정해 보겠습니다.
  • 이제 두 비밀번호 해시가 모두 동일합니다.
  • 따라서 저장된 해시 코드를 보면 귀하의 비밀번호가 제 "jeff"와 동일하다는 것을 알 수 있습니다.

따라서 비밀번호에 "salt" 문자열을 추가할 수 있습니다.

  • 이것은 임의의 것일 수 있습니다.
  • 귀하의 계정은 "zuzu"이고 내 계정은 "rjrj"라고 가정합니다.
  • 이제 귀하의 비밀번호로 문자열 "jeffzuzu"를 해시하고 내 비밀번호로 "jeffrjrj"를 해시합니다.
  • 이제 비밀번호에 대한 해시 값이 다릅니다.
  • 솔트 값을 아는 것조차도 해시를 디코딩하는 데 도움이 되지 않으므로 해시된 비밀번호로 솔트 값을 안전하게 저장할 수 있습니다.

.net에 대해 언급하셨는데, 다른 포럼에 이에 대한 포인터가 있습니다.

System.Security.Cryptography.MD5CryptoServiceProvider md5 = new
System.Security.Cryptography.MD5CryptoServiceProvider();

string hash =BitConverter.ToString((md5.ComputeHash(
System.Text.ASCIIEncoding.Default.GetBytes(stringtohash) ) ));

HTH!

과정이 좀 복잡하네요...솔트와 비밀번호는 한 번이 아니라 1000번 해시됩니다.또한 base64 인코딩은 다른 알파벳을 사용하며 끝 부분의 패딩이 제거됩니다.

가장 좋은 방법은 cygwin에서 glibc와 같이 사용할 라이브러리를 찾는 것입니다.

어쨌든 Apache에 대해 코딩했으므로 다음을 살펴보십시오. 아파치의 구현 crypt-md5.

C의 원래 알고리즘(제 생각에는)을 찾을 수 있습니다. 여기.위의 구현과 다른 매직 넘버만 다릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top