2010-02-24 38 views
27

kiểu trường có thể xảy ra:Thực hành tốt nhất để lưu trữ một cách hiệu quả băm md5 trong mysql

BINARY(16) 
CHAR(32) 
BIGINT + BIGINT 

Làm thế nào để quyết định cái nào sử dụng không?

+3

Không có. Không sử dụng MD5, đó là [băm chết] (http://valerieaurora.org/hash.html). Sử dụng SHA-2 hoặc cao hơn và lưu trữ dưới dạng một chuỗi ký tự hex (64 ký tự). Nó rất hay để đọc, trong thời trang này, và đó là cách tiếp cận tiêu chuẩn. –

+0

im không tốt tại MySql nhưng một băm là nomaly một mảng byte để BINARY (16) nên là tốt nhất, nhưng nó có thể khó khăn hơn để viết câu hỏi sql tùy chỉnh chống lại nhị phân nếu thats cần thiết? – Peter

+1

Băm MD5 thường được biểu diễn dưới dạng số hex gồm 32 chữ số. CHAR (32) sẽ hoạt động tốt. – thetaiko

Trả lời

43

Nếu cột được lập chỉ mục và bạn biết bạn đang làm gì, BINARY(16) vì lý do hiệu suất.

Nếu không, CHAR(32) là tốt. Hãy chắc chắn rằng cột sử dụng bộ mã ascii mặc dù. (Ví dụ: ascii_bin)

+15

UNHEX() sẽ chuyển đổi MD5 thành chuỗi nhị phân. http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_unhex – Slashterix

+1

Và sau đó sử dụng HEX() khi CHỌN để chuyển đổi từ nhị phân thành dạng thập lục phân dễ đọc hơn. – Eborbob

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