sql >> Database >  >> RDS >> Sqlserver

DECRYPTBYASYMKEY() Verwachte waarde niet retourneren

Het klopt - wanneer u iets versleutelt, wordt het behandeld als een bytearray en als zodanig geretourneerd. 0x47 is G, 72 is r enz.

Als u de documentatie voor DecryptByAsmKey bekijkt u zult merken dat het retourtype varbinair is met een maximale grootte van 8.000 bytes. Je zult de conversie ook opmerken in het voorbeeld.

Dus als je strings codeert en decodeert, moet je zo converteren

SELECT CONVERT(varchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'), 
    EncryptByAsymKey(AsymKey_ID('myasymkey'), 
    'Greg'), 
    N'123pass!'));

Merk ook op dat u ervoor moet zorgen dat u converteert naar varchar(max) of nvarchar(max), afhankelijk van uw invoer. Als je het hebt geprobeerd

SELECT CONVERT(nvarchar(max),DECRYPTBYASYMKEY(ASYMKEY_ID('myasymkey'), 
    EncryptByAsymKey(AsymKey_ID('myasymkey'), 
    'Greg'), 
    N'123pass!'));

het zou verkeerd zijn, aangezien je invoer van 'Greg' een varchar is.



  1. Hoe parallelle plannen opstarten - deel 2

  2. Controleer op referentiële integriteitsbreuk

  3. Is het veilig om de gebruiker het mysql-veld te laten specificeren om te zoeken?

  4. Gegroepeerde aaneenschakeling :Duplicaten bestellen en verwijderen