Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

DECRYPTBYASYMKEY() Tidak Mengembalikan Nilai yang Diharapkan

Itu benar - ketika Anda mengenkripsi sesuatu itu diperlakukan sebagai array byte dan dikembalikan seperti itu. 0x47 adalah G, 72 adalah r dll.

Jika Anda memeriksa dokumentasi untuk DecryptByAsmKey Anda akan melihat tipe pengembaliannya adalah varbinary dengan ukuran maksimum 8.000 byte. Anda juga akan melihat orang yang bertobat dalam contoh.

Jadi jika Anda mengenkripsi dan mendekripsi string, Anda harus mengonversinya seperti itu

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

Perhatikan juga bahwa Anda perlu memastikan bahwa Anda mengonversi ke varchar(max) atau nvarchar(max) tergantung pada input Anda. Jika Anda mencoba

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

itu akan salah, karena input 'Greg' Anda adalah 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. Memulihkan Database SQL Server (T-SQL)

  2. hapus baris kunci utama yang merupakan kunci asing dari tabel lain

  3. SQL Dapatkan Kejadian Terakhir Bidang Terhadap Setiap Baris

  4. Mengubah format tanggal pada DB SQL Server dan bukan di seluruh server menjadi hh/bb/tttt

  5. Bagaimana cara mengikat parameter ISO8601 TSQL DATETIME dengan PDO?