암호화
BEGIN
/* 암호화 관련 인증서 Open - 필수 */
Open Symmetric Key PwKey Decryption By Certificate EncryptKey;
/* 사용자 패스워드 수정 */
UPDATE SY1001 SET
USER_PW = dbo.F_ENCRYPT_PWD('1') /* 비밀번호 */
WHERE KI_CD = '00001' /* 회사코드 */
AND USER_ID = 'ABC' /* 시스템사용자ID */
/* 암호화 관련 인증서 Close - 필수 */
Close Symmetric Key PwKey;
END
개인정보 같은 경우는 볼수 없게 암호화 해서 DB에 저장됨
실제로 DB가보면 0x00ED0B5B170A62478ABFDDC26718CED102000000....
이런식으로 저장되어있음.
try/catch 문으로 오류 잡아주는 구문이 더 추가되어야 더 좋은 쿼리라 볼 수 있따.
F_ENCRYPT_PWD
이 프로시저는 암호화 처리하기 위해 미리 만들어 둠. 위의 암호화 쿼리에 사용됬음
USE [TERP]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[F_ENCRYPT_PWD]
(@PWD NVARCHAR(100))
RETURNS VarBinary(128)
AS
BEGIN
DECLARE @R_PWD VarBinary(128);
SELECT @R_PWD = ENCRYPTBYKEY(Key_Guid('PwKey'),@PWD)
RETURN @R_PWD
END
받아온 값은 @PWD, 뱉을 값은 @R_PWD 에 넣고
Key_Guid는 고유 식별자 추적