sql >> Database teknologi >  >> RDS >> Sqlserver

DECRYPTBYASYMKEY() Returnerer ikke forventet værdi

Det er rigtigt - når du krypterer noget, behandles det som en byte-array og returneres som sådan. 0x47 er G, 72 er r osv.

Hvis du undersøger dokumentationen for DecryptByAsmKey du vil bemærke, at returtypen er varbinær med en maksimal størrelse på 8.000 bytes. Du vil også bemærke konverteren i eksemplet.

Så hvis du krypterer og dekrypterer strenge, skal du konvertere sådan

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

Bemærk også, at du skal sikre dig, at du konverterer til varchar(max) eller nvarchar(max) afhængigt af dit input. Hvis du prøvede

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

det ville være forkert, da dit input af 'Greg' er en varchar.



  1. Nodejs Cluster med MySQL-forbindelser

  2. Bulk indsæt og få returneret ids laravel

  3. mysql tæller rækker med loop

  4. Hvordan opretter du en gennemsnitlig tidsforskel mellem poster i MySQL?