[mssql]데이터베이스 암호화
***설명
데이터베이스 암호화
SQL 서버 2000까지의 암호화
- 문서화되지 않은 PWDEncrypt 함수로 복호화 되지 않는 단 방향 해시 함수로, 해당 값의 비교를 위한 PWDCompare 함수를 따로 지원한다.
DECLARE @Ciphertext varbinary(20);
DECLARE @Plaintext varchar(20);
SET @Plaintext = 'Hello'
set @Ciphertext = PWDENCRYPT(@Plaintext)
SELECT [원문] = @Plaintext , [암호문] = @ciphertext
SQL 서버 2005 암호화 방식
- 내장된 암호화 함수가 제공되고 이 함수 (MD2,MD4,MD5SHA,SHA1) 지원 (단방향 해시)
DECLARE @Ciphertext varbinary(20);
DECLARE @Plaintext varchar(20);
SET @Plaintext = 'Hello'
set @Ciphertext = HashBytes('SHA1',@Plaintext)
SELECT [원문] = @Plaintext , [암호문] = @ciphertext
- ENCRYPTBYPASSPHRASE 패스워드를 가지고서 키를 암호화 하는 방식
----------
DecryptByPassPhrase(
{ 'passphrase' | @passphrase }
, { 'ciphertext' | @ciphertext }
[
, { add_authenticator | @add_authenticator }
, { authenticator | @authenticator }
]
)
passphrase 암호 해독을 위한 키를 생성하는 데 사용할 전달 구입니다. @passphrase 암호 해독을 위한 키를 생성하는 데 사용할 전달 구가 들어 있는 nvarchar, char, wchar, varchar 또는 nchar 형식의 변수입니다.
ciphertext 암호를 해독할 암호화 텍스트입니다.
@ciphertext 암호화 텍스트가 들어 있는 varbinary 형식의 변수입니다. 최대 크기는 8,000바이트입니다.
add_authenticator 인증자가 일반 텍스트와 함께 암호화되었는지 여부를 나타냅니다. 인증자를 사용한 경우 정수 1입니다.
@add_authenticator 인증자가 일반 텍스트와 함께 암호화되었는지 여부를 나타냅니다. 인증자를 사용한 경우 정수 1입니다.
authenticator 인증자 데이터입니다.
@authenticator 인증자가 파생될 데이터를 포함하는 변수입니다.
---------------------
DECLARE @CreditCardNo varchar(20);
SET @Creditcardno = '1234567890'
DECLARE @PASS nvarchar(128);
SET @PASS = '암호화문자입니다.'
DECLARE @Enctext varbinary(8000)
set @Enctext = EncryptByPassPhrase(@Pass,@creditCardNo)
DECLARE @Dectext varbinary(8000)
set @Dectext = DecryptByPassPhrase(@Pass,@Enctext)
SELECT @creditCardNo 카드번호,
@PASS 암호화문자,
@Enctext 암호화,
@Dectext,
CONVERT(VARCHAR,@Dectext) 복호화
복호화에 반환되는 데이터는 VarBinary 형태임에 주의하여 문자열로 변환 하여야 한다.
SQL SERVER 2008
TDE (Transparent Data Encrypt)
http://msdn.microsoft.com/ko-kr/library/bb934049.aspx
http://optimizer.tistory.com/48
'MSSQL*' 카테고리의 다른 글
SQL Server Profiler를 통해 실행 되는 모든 쿼리문 검색 (0) | 2013.11.28 |
---|---|
MSSQL 시스템 명령어 (0) | 2013.11.12 |
배치작업으로 TABLE을 동기화 할 때 주의사항 (0) | 2013.10.23 |
SQL 함수 (0) | 2009.08.19 |
SELECT 시에 임의의 변수를 함께 불러올 때 type설정 (0) | 2008.12.08 |