2011-09-22 50 views
5

theo bài viết nàybiểu diễn byte trong BINARY_CHECKSUM()?

http://decipherinfosys.wordpress.com/2007/05/18/checksum-functions-in-sql-server-2005/

họ nói rằng

BINARY_CHECKSUM() trả về giá trị tương tự nếu các yếu tố của hai biểu thức có cùng loại và đại diện byte. Vì vậy, “2Volvo Giám đốc 20" và “3Volvo Giám đốc 30" sẽ mang lại giá trị cùng

câu hỏi của tôi là là những gì byte representation?

và tại sao

SELECT BINARY_CHECKSUM('2Volvo Director 20' )// -1356512636 
SELECT BINARY_CHECKSUM('3Volvo Director 30' )// -1356512636 

cho kết quả tương tự?

byte của '' là không như byte ''

Trả lời

5

Tôi không biết chính xác những gì bài báo đó có nghĩa là bởi cách nói đó, nhưng từ googling xung quanh tôi thấy rằng một SQL Server MVP đã đảo ngược thiết kế các thuật toán đầy đủ (ví dụ: here) và những người khác đã nhận thấy rằng thuật toán có vấn đề kỳ lạ xung quanh một chu kỳ 16 ký tự. Chú ý rằng trong mẫu đó, những thay đổi xảy ra ở vị trí 1 và vị trí 17:

SELECT BINARY_CHECKSUM('2Volvo Director 20' )-- -1356512636 
SELECT BINARY_CHECKSUM('3Volvo Director 30' )-- -1356512636 
--      123456789

là 16 ngoài - nếu không gian được lấy ra để những thay đổi xảy ra ở vị trí 1 và , bạn sẽ có được tổng kiểm tra khác nhau:

đồng thuận
SELECT BINARY_CHECKSUM('2Volvo Director20' )-- 1257395465 
SELECT BINARY_CHECKSUM('3Volvo Director30' )-- 1257395480 
--      123456789

internet dường như rằng hàm băm được cung cấp bởi BINARY_CHECKSUM có chất lượng thấp, và rằng bạn nên sử dụng HASHBYTES ưu tiên.

+0

vì vậy ... tại sao họ phát minh ra điều này nếu nó không chính xác? hoặc có một số lỗ đen trong đó (chu kỳ 16 '...) –

+0

Tất cả chúng ta đều mắc lỗi, thậm chí là Microsoft :) Đặc biệt, đến với hàm băm tốt là cực kỳ khó, trong khi sắp tới với hàm băm xấu thì cực kỳ dễ. Ít nhất [các tài liệu cho 'CHECKSUM'] (http://msdn.microsoft.com/en-us/library/ms189788.aspx) nói (về cơ bản)" không sử dụng nó ". – AakashM

+0

CHỌN BINARY_CHECKSUM ('fa') CHỌN BINARY_CHECKSUM ('dA') cả hai giá trị cùng một giá trị ... 1537 – nav

Các vấn đề liên quan