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)로 생성이 안되어서
다르게 생성될 수 있지 않을까해서요.
혹시나 해서 스택오버플로우를 봤는데 두가지 찾은것 중에서 이게 더 비슷한것 같아 드립니다.
(답변쪽에 왜 그렇게 되었는지와 어떻게 해야할지를 설명하는것 같은데 대충만 읽어보고 코드자체를 보니 납득은 되는 흐름이라 그냥 드립니다) ㅋㅋㅋ
https://stackoverflow.com/questions/28275703/mssql-where-md5tablefield-md5value
엇 그런데 논점은 그게 아니였군요. 좀더 찾아볼게요.
마리아DB 5.5 이상은 이게 가능한거 아닌가요?
https://mariadb.com/kb/en/library/sha2/
Given a string str, calculates an SHA-2 checksum, which is considered more cryptographically secure than its 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.
뒤늦게 암호화에 대해서 조금 관심이 생겨서 찾아보다 나온 글이라 댓글을 달아봅니다.
디비에서 생성된 암호는 디비벤더마다 달라도, php 에서 생성된 암호의 해쉬값을 디비에 넣는 것은 동일하지 않을른지 모르겠습니다. 제가 맥을 잘못짚었다면 죄송합니다.
해쉬값을 프로그래밍코드에서 만들지, 디비에서 만들지가 관건이지 않을른지 해서...