SQL Server 암호화/복호화

이전 직장 동료로부터 전화를 받았습니다.

DB에 새로운 테이블을 생성하고 데이터를 암호화하여 저장했는데 복호화하면 결과 값이 null입니다.

이 DB에 연결을 시도하고 검색했지만 실제로는 0이 나왔습니다.

공개 대칭 키 keyValue
인증서 certValue에 의한 해독;

passwd 선택, CAST(DECRYPTBYKEY(passwd) AS VARCHAR)
userTable에서;


제로 결과

내가 무엇을 하든 찾아볼 수 없고 항상 0이 됩니다.

이것 저것 해보느니 차라리 처음부터 따져보고 칼럼 정의부터 보자고 하는데 바이너리다.

이것을 varbinary, input, query data로 변경하면 정상적으로 출력됩니다.


정상적인 결과

Microsoft Learn에서는 다음과 같이 정의됩니다.ENCRYPTBYKEY(Transact-SQL) – SQL 서버 | 마이크로소프트 런)

반환 유형

최대 크기가 8,000바이트인 varbinary입니다.

키가 열려 있지 않거나 존재하지 않거나 사용되지 않는 RC4 키이고 데이터베이스 호환성 수준이 110보다 크거나 같지 않은 경우 null을 반환합니다.

일반 텍스트의 값이 NULL이면 NULL을 반환합니다.