Pertanyaan saya terkait dengan percobaan berikut dengan dua contoh:
Contoh SQL Server 2017 Express (Microsoft SQL Server 2017 (RTM-CU16)) Contoh
SQL Server 2014 Express (Microsoft SQL Server 2014 (SP2-CU18))
Saya menggunakan fungsi ENCRYPTBYPASSPHRASE untuk mengenkripsi teks dan menggunakan hasilnya sebagai @ciphertext untuk DECRYPTBYPASSPHRASE . Hasil tes saya adalah ini:
Menurut perbaikan Microsoft ini ,
[...] SQL Server 2017 menggunakan algoritma hashing SHA2 untuk hash frasa sandi. SQL Server 2016 dan versi SQL Server sebelumnya menggunakan algoritma SHA1 yang tidak lagi dianggap aman.
Tetapi bagaimana ia tahu apa algoritma yang digunakan untuk mengenkripsi data jika tidak ada argumen yang terkait dengan itu pada fungsi DECRYPTBYPASSPHRASE? Apakah itu bagian dari data terenkripsi?
Dengan hasil pengujian saya, saya kira SQL Server selalu menggunakan versi terbaru dari algoritma yang tersedia pada contoh untuk mengenkripsi data, tetapi mencoba semua algoritma untuk mendekripsi data sampai menemukan satu yang cocok atau mengembalikan NULL ketika tidak ada algoritma yang sesuai ditemukan . Tapi ini hanya dugaan karena saya tidak dapat menemukan cara untuk memeriksa algoritma hashing apa yang digunakan SQL Server untuk mendekripsi data terenkripsi.