Điểm:0

Tìm kiếm một hàm băm (không nhất thiết phải là mật mã) trong đó các đầu vào tương tự trả về các đầu ra không giống nhau

lá cờ in

Tôi có nhu cầu lấy một chuỗi và trả về một màu. Một yêu cầu là cùng một tên luôn trả về cùng một màu. Một điều nữa là các tên tương tự không được trả về các màu tương tự.

Tôi hiểu rằng một thuộc tính của các hàm băm mật mã là những thay đổi nhỏ đối với đầu vào dẫn đến những thay đổi lớn đối với đầu ra (sự khuếch tán). Đây có vẻ như là tài sản tôi cần. Tuy nhiên, tôi không yêu cầu hàm băm phải là mật mã theo bất kỳ nghĩa nào khác (nó có thể dễ dàng đảo ngược).

Có ai có đề xuất về cách viết hàm với thuộc tính này không? Có chức năng mật mã hiện có mà tôi có thể sử dụng không? Cảm ơn bạn.

lá cờ kr
MD5 (mặc dù tôi không được khuyến nghị cho mục đích mã hóa, nhưng nó đáp ứng các yêu cầu của bạn), SHA-256, SHA-512, BLAKE2, Whirlpool - tất cả chúng đều đáp ứng các yêu cầu mà bạn đã mô tả.
solowt avatar
lá cờ in
Thật tuyệt vời, cảm ơn bạn. Bạn có biết nếu có các hàm băm không mã hóa có các thuộc tính tôi cần không?
Mark avatar
lá cờ ng
@solowt có, nhưng không rõ liệu chúng có dễ sử dụng hơn không. Có ít nhất hai khái niệm liên quan: Một là "bản đồ hỗn loạn" --- những thay đổi nhỏ ở đầu vào dẫn đến những thay đổi lớn ở đầu ra. Cái còn lại là bước đi ngẫu nhiên "trộn nhanh", ví dụ: (giống như hàm băm mật mã) người ta có thể mong đợi đầu ra sau một vài lần lặp sẽ trông đồng nhất. Lý do duy nhất khiến tôi không sử dụng hàm băm là nếu tôi đã có một triển khai đang hoạt động và nhận thấy các cuộc gọi hàm băm cần được tối ưu hóa. Mặc dù vậy, các hàm băm mật mã nhanh một cách đáng ngạc nhiên.
Mark avatar
lá cờ ng
Điều đáng nói là tôi không biết đủ về hàm ý "không có sẵn" của hai khái niệm mà tôi đã mô tả. Tất nhiên, có rất nhiều hàm băm.
lá cờ kr
@solowt: MD5 không bảo mật bằng mật mã.Nó được thiết kế cho mục đích mật mã. Nhưng nó có khả năng chống va chạm yếu và không được sử dụng trong bất kỳ trường hợp sử dụng mật mã nghiêm trọng nào.
jthill avatar
lá cờ cn
Chỉ cần crc32 thực hiện chính xác những gì bạn đang yêu cầu.
solowt avatar
lá cờ in
Cảm ơn mọi người. Tôi sẽ xem xét crc32 và md5. Đánh giá cao sự giúp đỡ.
kelalaka avatar
lá cờ in
Tôi đang bỏ phiếu để đóng câu hỏi này vì Đây không phải là về các hàm băm mật mã. Điều này phù hợp hơn với CS.
solowt avatar
lá cờ in
Cảm ơn sự giúp đỡ của bạn KELALAKA, đánh giá cao nó, tiếp tục làm việc tốt.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.