내 문제는 조금 털이, 나는 40 문자 SHA1 해시를 20 문자 SHA1 해시로 변환 할 수 있습니까?
나는 회원 시스템의 사용자 암호를 & 염을 저장하는 기존의 MySQL 데이터베이스를 가지고 ..., 그래서 나와 함께 곰하시기 바랍니다 잘못된 질문을 할 수있다. 이 값은 모두 루비 프레임 워크를 사용하여 해시 된 - 대략 다음과 같이 :hashedsalt = 다이제스트 :: SHA1.hexdigest ("- # {Time.now.to_s} - # {로그인} - - ")
hashedpassword = 다이제스트 :: SHA1.hexdigest ("# {hashedsalt} # {암호} ")
그래서 두 값이 모두 40 문자열 (VARCHAR로 저장됩니다
(40)).
이제 모든 사용자를 SQL Server 데이터베이스를 사용하는 새 웹 사이트의 ASP.NET 멤버 자격 프레임 워크로 가져와야합니다. 그것은 내가 ASP.NET 멤버십을 구성한 방식으로, 사용자 비밀번호와 소금도 SHA1 해시로 멤버쉽 데이터베이스 (테이블 aspnet_Membership)에 저장된다는 것을 이해합니다.이 해시는 Base64로 인코딩되며 (자세한 내용은 here 참조) 저장되어 있습니다. nvarchar (128) 데이터로 저장합니다.
그러나 저장되는 Base64 인코딩 된 문자열의 길이 (28 자)에서 ASP.NET 멤버십이 생성하는 SHA1 해시는 40 자 수가 아니라 20 자입니다. 일부 다른 읽기에서부터 이 문자/문자 집합/인코딩 또는 뭔가 관련된 당 비트 수와 관련이 있다고 생각합니다.
40 문자 SHA1 해시를 20 문자 해시로 변환하여 새 ASP.NET 멤버십 데이터 테이블로 전송할 수있는 방법이 있습니까? 저는 ASP.NET 멤버쉽에 대해 이미 잘 알고 있습니다 만,이 기사를 놓치고있는 것 같습니다. 그러나 루비의 SHA1과. NET의 SHA1은 호환되지 않으므로 잃어버린 전투와 싸우고있는 것으로 알려져 있습니다 ...
미리 감사드립니다.
매우 흥미 롭습니다. 내일 이것을 시도 할 것입니다. 정말 고맙습니다. – ewitch