내 질문은 두 가지 경우에 대한 다음 실험과 관련이 있습니다.
SQL Server 2017 Express 인스턴스 (Microsoft SQL Server 2017 (RTM-CU16))
SQL Server 2014 Express 인스턴스 (Microsoft SQL Server 2014 (SP2-CU18))
ENCRYPTBYPASSPHRASE 함수 를 사용하여 텍스트를 암호화하고 결과를 DECRYPTBYPASSPHRASE 의 @ciphertext로 사용 했습니다 . 내 테스트 결과는 다음과 같습니다.
이에 따라 마이크로 소프트의 수정 ,
[...] SQL Server 2017은 SHA2 해싱 알고리즘을 사용하여 암호를 해시합니다. SQL Server 2016 및 이전 버전의 SQL Server는 더 이상 안전하지 않은 SHA1 알고리즘을 사용합니다.
그러나 함수 DECRYPTBYPASSPHRASE에 관련된 인수가없는 경우 데이터를 암호화하는 데 사용 된 알고리즘이 무엇인지 어떻게 알 수 있습니까? 암호화 된 데이터의 일부입니까?
내 테스트 결과에 따르면 SQL Server는 항상 인스턴스에서 사용할 수있는 최신 버전의 알고리즘을 사용하여 데이터를 암호화한다고 생각하지만 해당 알고리즘을 찾을 수 없을 때 NULL을 반환하거나 반환하는 알고리즘을 찾을 때까지 모든 알고리즘을 시도하여 데이터를 해독합니다. . SQL Server가 암호화 된 데이터를 해독하는 데 사용한 해싱 알고리즘을 확인할 수있는 방법을 찾지 못했기 때문에 추측 일뿐입니다.