Câu hỏi của tôi liên quan đến thí nghiệm sau với hai trường hợp:
Phiên bản SQL Server 2017 Express (Microsoft SQL Server 2017 (RTM-CU16)) Phiên bản
SQL Server 2014 Express (Microsoft SQL Server 2014 (SP2-CU18))
Tôi đã sử dụng chức năng ENCRYPTBYPASSPHRASE để mã hóa một văn bản và sử dụng kết quả này dưới dạng @codestext cho DECRYPTBYPASSPHRASE . Kết quả kiểm tra của tôi là:
Theo bản sửa lỗi này của Microsoft ,
[...] SQL Server 2017 sử dụng thuật toán băm SHA2 để băm cụm mật khẩu. SQL Server 2016 và các phiên bản trước của SQL Server sử dụng thuật toán SHA1 không còn được coi là an toàn.
Nhưng làm thế nào để biết thuật toán được sử dụng để mã hóa dữ liệu là gì nếu không có đối số liên quan đến điều đó trên hàm DECRYPTBYPASSPHRASE? Nó có phải là một phần của dữ liệu được mã hóa không?
Theo kết quả kiểm tra của tôi, tôi đoán SQL Server luôn sử dụng phiên bản mới hơn của thuật toán có sẵn để mã hóa dữ liệu, nhưng thử tất cả các thuật toán để giải mã dữ liệu cho đến khi tìm thấy một thuật toán phù hợp hoặc trả về NULL khi không tìm thấy thuật toán tương ứng . Mặc dù đó chỉ là phỏng đoán vì tôi không thể tìm ra cách nào để kiểm tra thuật toán băm SQL Server đã sử dụng để giải mã dữ liệu được mã hóa.