현재 사용자의 암호가 일반 텍스트로 들어있는 데이터베이스 스키마가 있습니다. MD5를 통해 현재 일반 텍스트 암호를 해싱하려는 의도로 binary binary (16)라는 새로운 열을 추가했습니다. 이 작업을 수행 할 때 암호 필드에 저장된 값이 잘못되었음을 알게되었습니다. 내 기록 중 하나를 들어, 일반 텍스트 암호 asdf을가해시 값이 올바르지 않은 해시 값을 반환하는 varchar
UPDATE my_table SET password=HASHBYTES('MD5', plain_text_password);
입니다 : 여기 내 변환 쿼리입니다. 올바른 MD5 값은 0x912ec803b2ce49e4a541068d495ab570
입니다. 그러나 해당 레코드는 0xEC81AFD2DF2BDA47850F9182F4AC300D
으로 대신 업데이트됩니다.
전에 본 모든 문제가있는 사람이 있습니까? 내가 SQL 서버 2008
업데이트를 사용하고이 좀 더 대해 생각 을, 나는 VARCHAR (50)에 VARCHAR (MAX)에서 일반 텍스트 암호 필드를 변환. 그것은 SQL 관리 스튜디오 내에서 같은 방식으로 표시하지만, 데이터가 varchar (MAX) 형식으로되어있을 때의 기본 인코딩이 어떻게 든 새로운 varchar (50) 형식으로 복사되어 불일치가 발생하는지 궁금합니다.
반환되는 값이 잘못되었다고 생각하는 이유는 무엇입니까? – Rob
동일한 HASHBYTES 함수와 같은 이진 (16) 필드를 사용하는 새 사용자를 등록하고 올바른 해시를 저장하는 루틴이 있습니다. – David