C'est vrai - lorsque vous cryptez quelque chose, il est traité comme un tableau d'octets et est renvoyé comme tel. 0x47 est G, 72 est r etc.
Si vous examinez la documentation de DecryptByAsmKey vous remarquerez que le type de retour est varbinary avec une taille maximale de 8 000 octets. Vous remarquerez également la conversion dans l'exemple.
Donc, si vous chiffrez et déchiffrez des chaînes, vous devez convertir comme ceci
SELECT CONVERT(varchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
Notez également que vous devez vous assurer que vous convertissez en varchar(max) ou nvarchar(max) en fonction de votre entrée. Si vous avez essayé
SELECT CONVERT(nvarchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
ce serait faux, car votre entrée de 'Greg' est un varchar.