문제

질문은 거의 자기 설명 적입니다. 많은 사이트, 많은 방법을 검색하고 많은 인코딩을 시도했지만 일치 할 수는 없습니다.

나는 "asdasd"일치 문자열을 만들려고 노력하고 있습니다. (http://www.fileformat.info/tool/hash.htm?text=asdasd)

도움이 되었습니까?

해결책

이 시도

using System.Security.Cryptography

public static string HashPassword(string unhashedPassword)
{
    return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(unhashedPassword))).Replace("-", String.Empty).ToUpper();
}

다른 팁

Bitconverter는 잘 작동합니다 ...

var testVal = "asdasd";
var enc = new ASCIIEncoding();
var bytes = enc.GetBytes( testVal );

var sha = new SHA512Managed();
var result = sha.ComputeHash( bytes );

var resStr = BitConverter.ToString( result );
var nodash = resStr.Replace( "-", "" );

nodash.Dump();

(512 비트 해시에 수정, 죄송합니다 :)

방금 PHP의 Crypt 기능과 일치하도록 .NET 해시 기능을 얻으려고 몇 시간을 보냈습니다. 재미 없어.

Crypt의 PHP 구현이 Base64 인코딩 된 문자열을 반환하고 여러 해시 반복을 수행하지 않기 때문에 여러 가지 과제가 있습니다 (예 : 5000은 Crypt의 기본값입니다.) 여러 라이브러리를 사용하여 .NET에서 비슷한 출력을 얻을 수 없었습니다. Cryptsharp를 찾을 때까지. PHP (또는 원래 C) 기능과 유사한 소금을 받아들입니다 (예 : "$6$round=5000$mysalt"). 후행 $는 없으며 소금을 제공하지 않으면 무작위로 자율적으로 생성됩니다.

Cryptsharp는 여기에서 찾을 수 있습니다.http://www.zer7.com/software.php?page=cryptsharp

좋은 배경 읽기 : - http://www.akkadia.org/drepper/sha-crypt.txt

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