database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6838 게시물 읽기
No. 6838
fn_varbintohexstr로 암호화하기
작성자
선이
작성일
2014-08-01 11:10
조회수
9,248

안녕하세요.

사용자 암호가 abcd입니다. 암호화하려고

select  password as pw
, UPPER(CONVERT(NVARCHAR(50), SUBSTRING(master.dbo.fn_varbintohexstr(HASHBYTES('MD5', password )), 3, 32)))  as pw1
, UPPER(CONVERT(NVARCHAR(50), SUBSTRING(master.dbo.fn_varbintohexstr(HASHBYTES('MD5', 'abcd')), 3, 32))) as pw2

이렇게 해봤더니

pw : abcd

pw1 : E4A5FC25F9BBE59EC5606FB8FC093C75

pw2 : E2FC714C4727EE9395F324CD2E7F331F

이렇게 나옵니다.

제 생각에는 pw1과 pw2가 동일한 값이 나와야할것 같은데요.

제 생각이 틀린건가요?

 

 

이 글에 대한 댓글이 총 6건 있습니다.

 DB에 password로 되어있는 컬럼의 type이 NCHAR나 NVARCHAR라는 점에 제 손목을 걸어 보겠습니다만...

우욱님이 2014-08-01 16:08에 작성한 댓글입니다.
이 댓글은 2014-08-01 16:10에 마지막으로 수정되었습니다. Edit

오늘은 無頭節이니 한 말씀 더 드립니다. ㅋㅋ


SELECT
  CONVERT( CHAR(64),  HASHBYTES('SHA2_256', '쉬운 암호!를 사용하는' + 'abcd' + '사용자*100가 있을수도있잖' ), 2 )
, CONVERT( CHAR(128), HASHBYTES('SHA2_512', '쉬운 암호!를 사용하는' + 'abcd' + '사용자*100가 있을수도있잖' ), 2 )
;

에서 보실 수 있는 것처럼
  1. MD5는 보안성이 너무 취약하니 최소 SHA2_256, 가능하면 SHA2_512정도는 사용해 주세요(참조: SHA )
  2. salt를 발라서 쉬운 암호를 사용하는 사람도 안전하게 지켜질 수 있도록 해주세요(salt로 사용자 고유ID 같은 것도 곁들이면  )
  3. fn_varbintohexstr를 쓰기 보다는 CONVERT로 쉽게 변경하세요
를 고민해 보시면 좋겠습니다.
우욱님이 2014-08-01 16:50에 작성한 댓글입니다.
이 댓글은 2014-08-04 14:09에 마지막으로 수정되었습니다. Edit

네..DB에 NVARCHAR 타입니다.

타입에 따라서 달라지는건가요?

연계시스템에서 사용하는 방식이 md5라 바꿀수 없을것 같은데요.

그리고 한가지 더 궁금한 점은

아래 우욱님이 남겨주신 샘플로 해보니 null값이 나옵니다.

그건 또 왜그런거죠?

ms sql 은 Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
 Apr  2 2010 15:48:46
 Copyright (c) Microsoft Corporation
 Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
사용하고 있습니다.

선이님이 2014-08-01 20:42에 작성한 댓글입니다. Edit

아..죄송합니다.

테스트해보니 타입에 따라서 결과가 달라지네요.

그래도

SELECT
CONVERT( CHAR(64), HASHBYTES('SHA2_256', '쉬운 암호!를 사용하는' + 'abcd' + '사용자*100가 있을수도있잖' ), 2 )

, CONVERT( CHAR(128), HASHBYTES('SHA2_512', '쉬운 암호!를 사용하는' + 'abcd' + '사용자*100가 있을수도있잖' ), 2 )
;
 
값이 null인건 잘모르겠습니다.
선이님이 2014-08-01 20:55에 작성한 댓글입니다. Edit

 그건 2008 R2는 SHA-2를 지원하지 않아서 그렇습니다.

참조: http://msdn.microsoft.com/ko-kr/library/ms174415(v=sql.105).aspx

우욱님이 2014-08-03 17:42에 작성한 댓글입니다. Edit

그렇군요.

감사합니다~

선이님이 2014-08-04 09:09에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6841안녕하세요 쿼리에 대해 질문 드립니다. [2]
투루로맨스
2014-08-14
6554
6840쿼리 질문입니다. [10]
둥둥이
2014-08-08
6748
6839시퀀스 증가 질문이요 [1]
으아~~
2014-08-08
6100
6838fn_varbintohexstr로 암호화하기 [6]
선이
2014-08-01
9248
6837mdb 파일 연결 관련하여 질문드립니다. [1]
쿠쿠쿠
2014-08-01
8046
6836두테이블에서 한테이블에 없는값 가져오기 [2]
둥둥이
2014-07-28
6435
6834기존 자료 검색 후 중복제거후 insert 하는 방법을 알고 싶습니다. [3]
꽃씨하나
2014-07-21
8407
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다