암호화(MSSQL)

송용준·2024년 9월 25일
  • 암호화

    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는 고유 식별자 추적

    • 복호화는 'DecryptBykeyAUtoCert' 함수를 씀 (MSSQL에서 그러함)
profile
용용

0개의 댓글