Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

DECRYPTBYASYMKEY() Не връща очаквана стойност

Правилно е - когато шифровате нещо, то се третира като байтов масив и се връща като такъв. 0x47 е G, 72 е r и т.н.

Ако разгледате документацията за DecryptByAsmKey ще забележите, че върнатият тип е varbinary с максимален размер от 8000 байта. Ще забележите и конвертирането в примера.

Така че, ако криптирате и декриптирате низове, трябва да конвертирате така

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

Също така имайте предвид, че трябва да сте сигурни, че конвертирате към varchar(max) или nvarchar(max) в зависимост от вашия вход. Ако сте опитали

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

би било грешно, тъй като въведеното от вас 'Greg' е varchar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Генериране на XML файл от SQL Server 2008

  2. Получаване на данни от съхранена процедура с Entity Framework

  3. SQL Server Create View Index, който съдържа различни или групирани по

  4. SQL заявка за извличане на данните от две таблици с не в състояние

  5. Автоматично изтриване на дата/час на MSSQL запис