2012-03-09 2 views
1

맞춤 멤버십 제공자를 작성 중입니다. 물론 사용자가 생성 한 암호를 암호화하고 싶습니다. 나는 .NET에는 암호를 암호화하는 것이 있다고 가정한다. 그것은 무엇이며 어떻게 사용합니까? 출력되는 문자열의 크기는 어느 정도입니까? 이전에 멤버쉽 공급자를 작성했지만 사용자가 유효한지 확인하는 것이 었습니다. 사용자 등록과 로그인을 추가해야하는 것은 이번이 처음입니다.MembershipProvider에서 내장 암호 암호화는 어떻게 사용합니까?

나는 정확한 검색어를 사용하고 있지 않지만 Google은 나에게 가치있는 것을 보여주지 못했다고 확신합니다.

답변

1

먼저 비밀번호를 암호화하면 안됩니다. them을 해시해야합니다 (이에 대한 영원한 논쟁이 있습니다).

해싱 암호의 경우 HMACSHA1을 사용할 수 있습니다. 예를 들어 사용자를 만들고 암호를 저장하기 전에 다음을 수행하십시오.

HMACSHA1 hash = new HMACSHA1(); 
hash.Key = youKey; // you could use machine key 
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password))); 

그런 다음 해당 값을 데이터베이스에 저장하십시오. 그러면 입력 된 암호를 해싱하고 해시 값을 비교하여 입력 된 암호를 비교할 수 있습니다.

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20"> 
    <providers> 
    <remove name="AspNetSqlProvider" /> 
    <add name="SqlProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     passwordFormat="Hashed" 
     applicationName="/" /> 
    </providers> 
</membership> 

체크 아웃이 내 blog post : 암호가 설정 파일에 해시되는 것을 지정해야 물론

. 여기에는 해시 된 및 암호화 된 암호를 사용하는 예제가 있습니다.

+0

이 경우에는 일반 텍스트로 저장하고 싶지 않다는 의미입니다. –

+0

@MikeWills - 당신이 무슨 뜻인지 이해할 수는 없지만, 암호화되어 있거나 해시되어 있는지 여부에 상관없이 일반 텍스트로 저장하지는 않습니다. – TheBoyan

+0

비밀번호가 pass1234이면 비밀번호 입력란에 pass1234가 표시됩니다. Hashed 나는 랜덤 횡설수설처럼 보일 것이다. –

관련 문제