Je to tak - když něco zašifrujete, je to považováno za bajtové pole a jako takové je vráceno. 0x47 je G, 72 je r atd.
Pokud si prostudujete dokumentaci pro DecryptByAsmKey všimnete si, že návratový typ je varbinary s maximální velikostí 8 000 bajtů. V příkladu si také všimnete převodu.
Pokud tedy šifrujete a dešifrujete řetězce, musíte převádět takto
SELECT CONVERT(varchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
Všimněte si také, že se musíte ujistit, že převádíte na varchar(max) nebo nvarchar(max) v závislosti na vašem vstupu. Pokud jste to zkusili
SELECT CONVERT(nvarchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'),
EncryptByAsymKey(AsymKey_ID('myasymkey'),
'Greg'),
N'123pass!'));
bylo by to špatně, protože váš vstup 'Greg' je varchar.