Ma question est liée à l'expérience suivante avec deux instances:
Instance SQL Server 2017 Express (Microsoft SQL Server 2017 (RTM-CU16)) Instance
SQL Server 2014 Express (Microsoft SQL Server 2014 (SP2-CU18))
J'ai utilisé la fonction ENCRYPTBYPASSPHRASE pour crypter un texte et utilisé le résultat comme @ciphertext pour DECRYPTBYPASSPHRASE . Les résultats de mes tests étaient les suivants:
Selon ce correctif de Microsoft ,
[...] SQL Server 2017 utilise l'algorithme de hachage SHA2 pour hacher la phrase secrète. SQL Server 2016 et les versions antérieures de SQL Server utilisent l'algorithme SHA1 qui n'est plus considéré comme sécurisé.
Mais comment sait-il quel a été l'algorithme utilisé pour chiffrer les données s'il n'y a aucun argument lié à celui-ci sur la fonction DECRYPTBYPASSPHRASE? Fait-il partie des données chiffrées?
D'après les résultats de mes tests, je suppose que SQL Server utilise toujours la version la plus récente de l'algorithme disponible sur l'instance pour chiffrer les données, mais essaie tous les algorithmes pour déchiffrer les données jusqu'à ce qu'il en trouve un qui corresponde ou renvoie NULL quand aucun algorithme correspondant n'est trouvé . C'est juste une supposition, car je n'ai trouvé aucun moyen de vérifier quel algorithme de hachage SQL Server a utilisé pour déchiffrer les données chiffrées.