2013-10-19 8 views
1

decryptbykey를 시도하고 null을 반환합니다.DecryptByKey가 null을 반환 함 SQL Server 2012

--CREATE MASTER KEY ENCRYPTION 
--BY PASSWORD = 'Password1' 

--CREATE CERTIFICATE MyCert 
--WITH SUBJECT = 'MyCert' 

--CREATE SYMMETRIC KEY MyKey 
--WITH ALGORITHM = TRIPLE_DES ENCRYPTION 
--BY CERTIFICATE MyKey 

OPEN SYMMETRIC KEY MyKey DECRYPTION 
BY CERTIFICATE MyCert; 

INSERT INTO sometable (ENCRYPTBYKEY(KEY_GUID('MyKey'),'12345')); 

CLOSE SYMMETRIC KEY MyKey; 

OPEN SYMMETRIC KEY MyKey DECRYPTION 
BY CERTIFICATE MyCert; 

SELECT 
    CONVERT(VARCHAR(50), DECRYPTBYKEY(some_column)) 
FROM sometable; 

CLOSE SYMMETRIC KEY MyKey; 

이 열은 varbinary (256)로 정의됩니다.

결과는 null입니다. null 대신 암호 해독 된 값을 얻으려면 어떻게 변경합니까? 또는 가능한 함정이나 점검해야 할 사항은 무엇입니까?

답변

1

문제는 테이블의 컬럼 데이터를 저장하기에 충분하지이었다 .. KEY_GUID ('있는 MyKey')가 null가 아닌 경우 테스트 수도있을 것 같군요. 따라서 오류없이 잘 렸습니다.

열 크기가 증가하여 문제가 해결되었습니다.

1

테이블 정의로 조정하면이 스크립트가 적합합니다. 테이블 정의를 포함하십시오. 이것이 첫 번째 단계가되어야합니다.

은 그 때 나는