Sorum şu iki örnekle yapılan deneme ile ilgilidir:
SQL Server 2017 Express örneği (Microsoft SQL Server 2017 (RTM-CU16))
SQL Server 2014 Express örneği (Microsoft SQL Server 2014 (SP2-CU18))
Bir metni şifrelemek için ENCRYPTBYPASSPHRASE işlevini kullandım ve sonucu DECRYPTBYPASSPHRASE için @ciphertext olarak kullandım . Testlerimin sonucu şuydu:
Bu Microsoft düzeltmesine göre ,
[...] SQL Server 2017, parolayı özetlemek için SHA2 karma algoritmasını kullanır. SQL Server 2016 ve SQL Server'ın önceki sürümleri, artık güvenli kabul edilmeyen SHA1 algoritmasını kullanır.
Ancak DECRYPTBYPASSPHRASE işlevinde bununla ilgili bir argüman yoksa, verileri şifrelemek için kullanılan algoritmanın ne olduğunu nasıl bilebilir? Şifrelenmiş verilerin bir parçası mı?
Testlerimin sonuçlarıyla, SQL Server'ın verileri şifrelemek için her zaman örnekte bulunan yeni algoritma sürümünü kullandığını, ancak karşılık gelen hiçbir algoritma bulunmadığında NULL'a uyan veya NULL döndüren bir veri bulana kadar tüm algoritmaları denemek için tüm algoritmaları dener . SQL Server şifreli verilerin şifresini çözmek için kullanılan karma algoritma kontrol etmek için herhangi bir yol bulamadım çünkü bu sadece bir tahmin olsa.