La mia domanda è collegata al seguente esperimento con due casi:
Istanza di SQL Server 2017 Express (Microsoft SQL Server 2017 (RTM-CU16)) Istanza di
SQL Server 2014 Express (Microsoft SQL Server 2014 (SP2-CU18))
Ho usato la funzione ENCRYPTBYPASSPHRASE per crittografare un testo e ho usato il risultato come @ciphertext per DECRYPTBYPASSPHRASE . Il risultato dei miei test sono stati questi:
Secondo questa correzione Microsoft ,
[...] SQL Server 2017 utilizza l'algoritmo di hashing SHA2 per eseguire l'hashing della passphrase. SQL Server 2016 e versioni precedenti di SQL Server utilizzano l'algoritmo SHA1 che non è più considerato sicuro.
Ma come fa a sapere qual è stato l'algoritmo utilizzato per crittografare i dati se non vi è alcun argomento correlato a quello sulla funzione DECRYPTBYPASSPHRASE? Fa parte dei dati crittografati?
In base ai risultati dei miei test, suppongo che SQL Server utilizzi sempre la versione più recente dell'algoritmo disponibile sull'istanza per crittografare i dati, ma prova tutti gli algoritmi a decrittografare i dati fino a quando non ne trova uno che si adatta o restituisce NULL quando non viene trovato alcun algoritmo corrispondente . È solo un'ipotesi, dal momento che non sono riuscito a trovare alcun modo per verificare quale algoritmo di hashing SQL Server ha utilizzato per decrittografare i dati crittografati.