2014-06-17 2 views
-1

게시 할 코드가 없습니다. 일반적인 질문 일뿐입니다.암호 해싱. 안전한?

현재 인증 설정이있는 웹 사이트가 있습니다. 사이트의 회원이 있으며 데이터베이스에 자격 증명을 저장합니다. 이것은 완벽하게 작동합니다. 상식은 여기에 적용되며 사용자 정보를 일반 텍스트로 저장해서는 안된다는 것을 알고 있습니다. 그러나, 내가 연구하는 동안, 나는 해싱 스트링이 아주 쉽게 할 수있는 것을 보았다. 내 발달 전반에 걸쳐이 암호를 해싱 할 수있는 방법이 있다는 것을 알았습니다. 암호만으로 충분합니까? 나는 그와 함께 어떤 종류의 암호화를해야 하는가? 가장 좋은 방법은 무엇입니까? 웹에서 좋은 정보를 찾지 못했습니다 ...

string dec = FormsAuthentication.HashPasswordForStoringInConfigFile(Login1.Password, "SHA1"); 도움이되는 정보를 미리 보내 주셔서 감사합니다.

+1

각 사용자마다 고유 한 소금을 사용하고 (편집 : 순수한) 암호 해시 알고리즘 대신 암호 해싱 알고리즘을 사용해보십시오. 암호 해독 키는 데이터와 동일한 서버에 저장해야하므로 암호화는 그다지 유용하지 않습니다. 하나가 손상되면 가능성이 높습니다. – TheEvilPenguin

+2

@ TheEvilPenguin 좋은 해싱 알고리즘 *은 * 암호입니다. –

+0

@ zespri 좋은 지적입니다. 오해의 소지가 있습니다. 나는 그것을 일종의 명확하게했다. 이미 누군가가 bcrypt 구현을 게시 했으므로 그 부분을 약간 훑어 보았습니다. – TheEvilPenguin

답변

5

해시 기능은 상당히 안전하지만 (입력을 염색하는 한!) 시간이 지남에 따라 약해지기 때문에 take a look at bcrypt이 좋습니다.

bcrypt 알고리즘의 핵심은 어려움을 구성 할 수 있다는 것입니다 및 컴퓨터가 점점 더 강력 해지고 심지어 정도로이 방법은 확장 :

Cryptotheoretically, 이것은 표준 복어 주요 일정보다 강한 없습니다, Rekeying 라운드 수는 구성 가능합니다. 따라서이 프로세스를 임의로 느리게 수행 할 수 있으므로 해시 또는 소금에 대해 브 루트 포스 공격을 막을 수 있습니다.

구현은 bcrypt for C# is available here입니다.

+3

및 같은 암호를 가진 두 사람 (시스템 또는 시스템에서)이 동일한 해시로 끝나지 않도록 소금을 추가하고 싶습니다. – Thilo

+0

좋은 정보입니다. 고맙습니다! – mwilson

관련 문제