Zgadza się - kiedy coś zaszyfrujesz, jest ono traktowane jako tablica bajtów i jako takie jest zwracane. 0x47 to G, 72 to r itd.
Jeśli przejrzysz dokumentację DecryptByAsmKey zauważysz, że zwracany typ to varbinary o maksymalnym rozmiarze 8000 bajtów. Zauważysz również konwersję w przykładzie.
Więc jeśli szyfrujesz i odszyfrowujesz ciągi, musisz je konwertować w ten sposób
SELECT CONVERT(varchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
Pamiętaj również, że musisz upewnić się, że konwertujesz na varchar(max) lub nvarchar(max) w zależności od danych wejściowych. Jeśli próbowałeś
SELECT CONVERT(nvarchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
byłoby źle, ponieważ wpisany przez Ciebie tekst „Greg” to varchar.