MS-SQL의 SHA2_512 암호화를 PHP + MariaDB 10.x 에서는 안되려나요? 채택완료
Windows2012 + MS-SQL 2012로 운영중인 홈페이지가 있습니다.
비밀번호 암호화가 HASHBYTES('SHA2_512', @Password) 의 형태로 되어 있네요.
비밀번호가 123456 인경우에
생성된 암호는 0x53D2466F8CBF101A68450C4B0DAE2B2319612C69B6C16B953E5A75DF72B32F0282C4E67AC1D306E1007D0C3F17695D21F6BB7AEBAA264F73B1DBBFB7C544A978
총130자로 생성됩니다.
홈페이지 리뉴얼을 하면서 CentOS7 + MariaDB10 으로 변경을 진행중입니다.
SHA2 512 를 구글에서 마구 검색해봤는데,
SHS2_512 는 MS-SQL 2005 / 2008 / 2012 에서 지원하는 암호화 방식이더군요
PHP + MySQL 5.5 에는 SHA512 암호화 형태가 있더군요
MySQL 5.5 이상 그리고 MariaDB 10.x 에서
select SHA2('123456'. 512); 이렇게 하니까 암호가 생성이되는데
ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413
총 128자
휴... 위와 같이 MS-SQL 의 SHA2 512 와 같은 암호화는 PHP + MySQL 또는 MariaDB 10.x 에서는 불가능한 걸까요?
답변 5개
음.. 아까 잠깐 생각해봤는데 플랫폼 아키텍처 문제일까요. (32bit, 64bit)
이를테면 2012운영중인 곳의 플랫폼들 아키텍트와,
지금 이전하는곳의 아키텍트의 차이로, binary(64)로 생성이 안되어서
다르게 생성될 수 있지 않을까해서요.
답변에 대한 댓글 3개
앗 명확하게 답변도 못드렸는데 채택을 주시다니.. 감사합니다! ㅋㅋ
댓글을 작성하려면 로그인이 필요합니다.
뒤늦게 암호화에 대해서 조금 관심이 생겨서 찾아보다 나온 글이라 댓글을 달아봅니다.
디비에서 생성된 암호는 디비벤더마다 달라도, php 에서 생성된 암호의 해쉬값을 디비에 넣는 것은 동일하지 않을른지 모르겠습니다. 제가 맥을 잘못짚었다면 죄송합니다.
해쉬값을 프로그래밍코드에서 만들지, 디비에서 만들지가 관건이지 않을른지 해서...
답변에 대한 댓글 1개
프로그램단에서 암호화하는 경우는 호환 코드를 제작하는 것이 좀더 원활하지만
SQL 단에서의 암호화는 그것이 패턴을 공개하지 않기때문에
다른 SQL 또는 프로그램에서 동일한 결과를 도출시키기가 ...
댓글을 작성하려면 로그인이 필요합니다.
마리아DB 5.5 이상은 이게 가능한거 아닌가요?
https://mariadb.com/kb/en/library/sha2/" href="https://mariadb.com/kb/en/library/sha2/">https://mariadb.com/kb/en/library/sha2/
Given a string str, calculates an SHA-2 checksum, which is considered more cryptographically secure than its https://mariadb.com/kb/en/sha1/">SHA-1equivalent. The SHA-2 family includes SHA-224, SHA-256, SHA-384, and SHA-512, and the hash_len must correspond to one of these, i.e. 224, 256, 384 or 512. 0 is equivalent to 256.
답변에 대한 댓글 4개
PHP 나 MariaDB 5.5 , MySQL 5.5.5 에서는 SHA2 512 라고 부릅니다.
그런데 MSSQL과 비MSSQL 결과값이 달라요.
구조적으로 뭐가 다른지 확인하려면, row level 까지 열어봐야할것 같은데... (MSSQL은.. 엔진에 접근할 수 없고....)
이것이 MSSQL 전용인듯 싶은데 ... 어휴
http://t2t2tt.tistory.com/14
http://mgdjaxo.blogspot.kr/2015/04/mssql-hashbytes.html
이것에 관련해서 찾아봐야겠네요.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 3개
Microsoft 에서 구현하는 방식과 PHP / MariaDB 에서의 결과값이
MySQL 은 5.5.5 이상 설치된 계정이 없어서 테스트를 못해봤지만
PHP / MariaDB와 동일한 값일꺼라 예상됩니다.
현재까지 정리한 내용입니다. http://www.happyjung.com/lecture/2601
결과값이 달라서 고민입니다.....
댓글을 작성하려면 로그인이 필요합니다.
혹시나 해서 스택오버플로우를 봤는데 두가지 찾은것 중에서 이게 더 비슷한것 같아 드립니다.
(답변쪽에 왜 그렇게 되었는지와 어떻게 해야할지를 설명하는것 같은데 대충만 읽어보고 코드자체를 보니 납득은 되는 흐름이라 그냥 드립니다) ㅋㅋㅋ
https://stackoverflow.com/questions/28275703/mssql-where-md5tablefield-md5value" href="https://stackoverflow.com/questions/28275703/mssql-where-md5tablefield-md5value">https://stackoverflow.com/questions/28275703/mssql-where-md5tablefield-md5value
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
그들만의 리그인거죠... 덴장 덴장 ...
MSSQL 은 HashByte = 130byte
Oracle 은 HashThis = ?
PHP , MariaDB 5.5 , MySQL 5.5.5 는 Hash = 128byte