È giusto:quando si crittografa qualcosa, viene trattato come un array di byte e viene restituito come tale. 0x47 è G, 72 è r ecc.
Se esamini la documentazione per DecryptByAsmKey noterai che il tipo restituito è varbinary con una dimensione massima di 8.000 byte. Noterai anche la conversione nell'esempio.
Quindi, se stai crittografando e decrittografando stringhe, devi convertire in questo modo
SELECT CONVERT(varchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
Nota inoltre che devi assicurarti di eseguire la conversione in varchar(max) o nvarchar(max) a seconda del tuo input. Se hai provato
SELECT CONVERT(nvarchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
sarebbe sbagliato, poiché il tuo input di 'Greg' è un varchar.