คำถามของฉันเกี่ยวข้องกับการทดสอบต่อไปนี้สองอินสแตนซ์:
อินสแตนซ์ของ SQL Server 2017 Express (Microsoft SQL Server 2017 (RTM-CU16))
อินสแตนซ์ของ SQL Server 2014 Express (Microsoft SQL Server 2014 (SP2-CU18))
ผมใช้ฟังก์ชั่นENCRYPTBYPASSPHRASEการเข้ารหัสข้อความและใช้ผลตามที่ @ciphertext สำหรับDECRYPTBYPASSPHRASE ผลการทดสอบของฉันคือ:
ตามนี้แก้ไขไมโครซอฟท์ ,
[... ] SQL Server 2017 ใช้อัลกอริทึมการแฮช SHA2 เพื่อแฮชรหัสผ่าน SQL Server 2016 และ SQL Server เวอร์ชันก่อนหน้าใช้อัลกอริทึม SHA1 ที่ไม่ถือว่าปลอดภัยอีกต่อไป
แต่จะรู้ได้อย่างไรว่าอัลกอริทึมนั้นใช้ในการเข้ารหัสข้อมูลอย่างไรหากไม่มีข้อโต้แย้งเกี่ยวกับสิ่งนั้นในฟังก์ชัน DECRYPTBYPASSPHRASE มันเป็นส่วนหนึ่งของข้อมูลที่เข้ารหัสหรือไม่?
จากผลการทดสอบของฉันฉันเดาว่า SQL Server จะใช้อัลกอริทึมรุ่นใหม่กว่าที่มีอยู่บนอินสแตนซ์เพื่อเข้ารหัสข้อมูลเสมอ แต่พยายามอัลกอริทึมทั้งหมดในการถอดรหัสข้อมูลจนกว่าจะพบหนึ่งที่เหมาะกับหรือส่งคืน NULL . เป็นเพียงการคาดเดา แต่เนื่องจากฉันไม่สามารถหาวิธีตรวจสอบอัลกอริทึมการแฮชที่ SQL Server ใช้เพื่อถอดรหัสข้อมูลที่เข้ารหัส