Nó đúng - khi bạn mã hóa một thứ gì đó, nó được coi là một mảng byte và được trả về như vậy. 0x47 là G, 72 là r, v.v.
Nếu bạn kiểm tra tài liệu cho DecryptByAsmKey bạn sẽ nhận thấy kiểu trả về là varbinary với kích thước tối đa là 8.000 byte. Bạn cũng sẽ nhận thấy chuyển đổi trong ví dụ.
Vì vậy, nếu bạn đang mã hóa và giải mã chuỗi, bạn phải chuyển đổi như vậy
SELECT CONVERT(varchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
Cũng lưu ý rằng bạn cần đảm bảo rằng bạn đang chuyển đổi thành varchar (tối đa) hoặc nvarchar (tối đa) tùy thuộc vào đầu vào của bạn. Nếu bạn đã thử
SELECT CONVERT(nvarchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
nó sẽ sai, vì đầu vào 'Greg' của bạn là một varchar.