Правилно е - когато шифровате нещо, то се третира като байтов масив и се връща като такъв. 0x47 е G, 72 е r и т.н.
Ако разгледате документацията за DecryptByAsmKey ще забележите, че върнатият тип е varbinary с максимален размер от 8000 байта. Ще забележите и конвертирането в примера.
Така че, ако криптирате и декриптирате низове, трябва да конвертирате така
SELECT CONVERT(varchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
Също така имайте предвид, че трябва да сте сигурни, че конвертирате към varchar(max) или nvarchar(max) в зависимост от вашия вход. Ако сте опитали
SELECT CONVERT(nvarchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
би било грешно, тъй като въведеното от вас 'Greg' е varchar.