2009-09-26 2 views
0

제 프로젝트에서 SQL 프로그래밍에 대한 지식이 부족합니다. 나는 passowrd 필드를 가진 tbUsers 있습니다. 하지만 지금은 MD5를 해시하기 위해 trasnform을 수행해야합니다.어떻게 모든 행을 선택하고 해시 코드로 필드를 업데이트 할 수 있습니까?

그러나 기록 된 모든 암호를 선택하고 해시 값을 업데이트하려면 어떻게해야합니까? 나는 hashvalue 부분을 필요로하지 않고 단지 모두를 선택하고 각각의 단일 행을 업데이트한다.

그리고 HashBytes 코드 이후

내가 각 행을 'MyPassword'타고 해시 부분을 할 필요가

HashBytes('MD5', 'MyPassword') 

이다; 설명 된대로 실제로 HashBytes가() 인 경우

답변

1

, 이것은 당신이 그러나

UPDATE tblUsers 
    SET password = HashBytes('MD5', password) 
    --WHERE -- here you could have some condition if somehow you didn't want 
       --all of the row updated. 

을해야 할 수도 있습니다 모든이, 당신이 대신 MD5를 호출, 새 열을 가지고 테이블을 수정하는 대신 고려하고 있습니다입니다 'SET md5 = ...'이것은 패스워드를 일시적으로 유지할 수있게 해주 며, 일이 잘 안되거나, 엉뚱한 MD5 로그인으로 몇 번의 로그인을 테스트하고자 할 때 편리합니다.

+0

감사합니다. mjv! 나는 그 해답을 찾았습니다! – AndreMiranda

1

나를 위해 유용 해결책은 이것이다 :

UPDATE tbUsers 
SET password = SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', tbUsers.password)),3,32) 
FROM tbUsers INNER JOIN tbUsers tbUsers2 
ON tbUsers.codUser = tbUsers2.codUser 
0

나는 이것에 대한 이유는 잘 모르겠지만, 기록을 위해 암호의 해시는 암호 검색에 대한 약간의 보호 기능을 제공합니다 적어도 약한 암호의 경우 해시 된 암호에 액세스 할 수있는 사람. 수십억 개의 잠재적 인 암호 (단어, 이름, A -> 4, I -> 1, O -> 0 대체, 단어가 두 배로 늘어나거나 끝에 붙어있는 단어 1 개, 짧은 무작위로 MD5 해시를 미리 계산하는 것은 간단합니다. 문자열 등)을 생성하고 생성 한 암호가있는 테이블에 색인 된 색인을 저장합니다. 해시 된 암호를 찾아 암호가 그 수십억 개 중 하나 인 경우 해당 암호를 플래시에서 찾습니다. 또한 모든 암호 해시에 액세스 할 수있는 경우 동일한 암호를 사용하는 그룹을 찾을 수 있습니다.

보안을 위해이 작업을 수행하는 경우 해쉬 된 짠 암호를 시작할 수 있는지 확인하십시오.