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

Bagaimana cara mendapatkan kompatibilitas antara C# dan SQL2k8 AES Encryption?

Ada beberapa hal yang akan saya lihat:

  1. Pastikan benar-benar bahwa plaintext identik dalam konten dan penyandian. IIRC, streaming default ke UTF-8 sedangkan jika VarBinaryToBase64 Anda fungsi mengambil parameter nvarchar, itu akan menjadi Unicode.

  2. Pastikan kedua algoritma enkripsi menggunakan ukuran blok yang sama. Dalam SQL, Anda menentukan algoritme saat Anda memanggil CREATE SYMMETRIC KEY . Jika Anda tidak menentukan algoritme, ia menggunakan AES256. Di .NET menggunakan RijndaelManaged , saya yakin ukuran blok default adalah 128 tetapi Anda dapat mengaturnya menjadi 256 (Anda tidak dapat melakukannya jika Anda menggunakan Aes kelas).

  3. Hal terakhir yang saya cari adalah bagaimana SQL Server menangani Vektor Inisialisasi seperti yang Anda sebutkan dalam posting Anda yang diubah. Saya ingin mengatakan bahwa itu menggunakan authenticator parameter untuk ini, tapi itu tebakan liar.

EDIT

Aku jauh. Mengingat apa yang saya temukan, Anda tidak dapat menggunakan kelas .NET untuk mendekripsi teks yang dienkripsi oleh enkripsi bawaan SQL Server karena SQL Server menambahkan banyak goo ke apa yang dienkripsi, termasuk vektor inisialisasi acak. Dari buku Michael Cole "Panduan Programmer Pro T-SQL 2005" (walaupun tahun 2008 melakukan hal yang sama):



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klien SQL untuk Mac OS X yang bekerja dengan MS SQL Server

  2. Bagaimana cara menggunakan partisi by dan order by in over function?

  3. Bagaimana cara mengubah kata sandi sa di SQL Server 2008 express?

  4. Log Transaksi SQL Server — Bagian 1

  5. SQRT() Contoh di SQL Server