私の質問は、2つのインスタンスを使用した次の実験に関連しています。
SQL Server 2017 Expressインスタンス(Microsoft SQL Server 2017(RTM-CU16))
SQL Server 2014 Expressインスタンス(Microsoft SQL Server 2014(SP2-CU18))
関数ENCRYPTBYPASSPHRASEを使用してテキストを暗号化し、その結果をDECRYPTBYPASSPHRASEの@ciphertextとして使用しました。私のテストの結果はこれらでした:
このMicrosoftの修正によると、
[...] SQL Server 2017は、SHA2ハッシュアルゴリズムを使用してパスフレーズをハッシュします。SQL Server 2016およびそれ以前のバージョンのSQL Serverは、安全と見なされなくなったSHA1アルゴリズムを使用します。
しかし、関数DECRYPTBYPASSPHRASEに関連する引数がない場合、データの暗号化に使用されたアルゴリズムはどのようにしてわかりますか?暗号化されたデータの一部ですか?
私のテストの結果から、SQL Serverは常にインスタンスで使用可能な新しいバージョンのアルゴリズムを使用してデータを暗号化すると思いますが、対応するアルゴリズムが見つからない場合、すべてのアルゴリズムがデータを復号化して、適合するアルゴリズムまたはNULLを返すまでデータを復号化します。暗号化されたデータを復号化するためにSQL Serverがどのハッシュアルゴリズムを使用したかを確認する方法が見つからなかったので、それは単なる推測です。