Det är rätt - när du krypterar något behandlas det som en byte-array och returneras som sådan. 0x47 är G, 72 är r osv.
Om du granskar dokumentationen för DecryptByAsmKey du kommer att märka att returtypen är varbinär med en maximal storlek på 8 000 byte. Du kommer också att märka konverteraren i exemplet.
Så om du krypterar och dekrypterar strängar måste du konvertera som så
SELECT CONVERT(varchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
Observera också att du måste se till att du konverterar till varchar(max) eller nvarchar(max) beroende på din inmatning. Om du försökte
SELECT CONVERT(nvarchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
det skulle vara fel, eftersom din inmatning av 'Greg' är en varchar.