2009-11-22 40 views
10

Khi người dùng đăng ký, tôi nên lưu trữ email của họ trong db như là hoặc băm nó. Tôi muốn có thể giải mã sau, vì vậy tôi nên sử dụng md5?php - Tôi có nên mã hóa địa chỉ email không?

cảm ơn bạn!

+6

Hashing (nhiều hơn hoặc ít hơn) ngăn không cho giải mã. Vì vậy, bạn chắc chắn không muốn làm điều đó. – Quentin

+1

Tôi ghét nó khi mọi người bỏ phiếu một câu hỏi như thế này. Nó không giống như anh ta đưa ra lời khuyên sai, anh ta hỏi một câu hỏi và một khái niệm anh ta muốn được xóa. Tôi Up bình chọn bạn trở lại 0. –

+0

Bạn nên băm() tất cả các email và giữ một bảng riêng biệt với các phím/cặp để bạn có thể cầu vồng unhash sau! ps. chỉ đùa (lập trình hài hước) – Frankie

Trả lời

16

Không, md5() - là one-way hash function. Bạn không thể giải mã giá trị của nó. Thông thường nó được sử dụng cho mật khẩu mà không cần phải được giải mã. Thay vào đó, bạn so sánh các dạng băm như:

$salt = "adding some secret to increasse security"; 
if (md5($user_password . $salt) == $user_password_hash_from_db) { 
    ## password is ok 
} 

Nếu bạn muốn có thể giải mã giá trị của mình, thay vào đó hãy sử dụng hàm crypt php. Nhưng nó có thể yêu cầu các mô-đun bổ sung sẽ được cài đặt.

Bất kỳ cách nào tôi không thấy bất kỳ lý do thực tế nào để mã hóa email.

+2

Tất nhiên bằng cách sử dụng một băm muối để lưu trữ mật khẩu sẽ là một ý tưởng tốt – tosh

+1

Vâng, giả vờ rằng tất cả mọi người và mẹ của họ biết rằng "md5 ('mật khẩu') == '5f4dcc3b5aa765d61d8327deb882cf99'", 'gây ra mọi cracker mà vấn đề sẽ biết. – Kzqai

+0

@tosh: Bạn hoàn toàn đúng. Tôi đã cập nhật câu trả lời. –

3

Không phổ biến để mã hóa địa chỉ email. Nếu ai đó thực sự muốn giữ email của họ ở chế độ riêng tư, họ sẽ không đưa email đó vào trang web của bạn ngay từ đầu :)

+1

Đề án gửi thư rác hiện đại ngụ ý khác nhau. Danh sách email có giá trị trong quyền riêng tư mà chúng đại diện. Giá trị là nhỏ, đặc biệt là so với mật khẩu, nhưng nó ở đó, do đó, một phương pháp mã hóa là có lợi, nhưng với email nó chắc chắn cần phải là một phương pháp đảo ngược. – Kzqai

0

Khi bạn sử dụng md5, bạn sẽ không thể giải mã được. md5 là một hàm one-way -hash.

0

md5 không phải là phương thức mã hóa, đó là một cách băm. Không có lý do gì để mã hóa địa chỉ email trong cơ sở dữ liệu. Tôi sẽ để chúng như vậy.

1

MD5 là một giá trị băm khiến cho giá trị ban đầu không thể đạt được. Bạn nên sử dụng mã hóa thay vì băm nếu bạn muốn nhận lại email.

0

Nếu bạn dự định giải mã chúng sau này, MD5 sẽ không phải là một tùy chọn, vì nó chỉ băm chuỗi, bạn sẽ mất dữ liệu gốc.

Tôi khuyên bạn nên thử một số chức năng mã hóa PHP được tích hợp sẵn cho điều đó.

0

Các câu trả lời khác nói lên tất cả.

Tuy nhiên, bạn nên luôn mã hóa băm mật khẩu với ít nhất md5() và muối, như đã chỉ ra trong bài trả lời của Ivan.

1

Tôi đồng ý rằng email là vấn đề bảo mật thông tin (nhỏ), vì đó sẽ trở thành thông tin cá nhân mà bạn đã đưa ra thế giới nếu ai đó truy cập vào cơ sở dữ liệu của bạn, nhưng bạn sẽ muốn mã hóa hai chiều/giải mã phương pháp để có thể kéo các email trở lại, như Ivan đã đề cập.

Chỉ cần lưu ý rằng băm MD5 cơ bản không còn là băm an toàn nữa.

Như wikipedia nói bằng nhiều cách khác nhau, không còn an toàn (http://en.wikipedia.org/wiki/MD5):

US-CERT của Bộ Ngoại giao Mỹ An ninh Nội địa nói MD5 "nên được coi mã hóa chia và không phù hợp để biết thêm sử dụng "[7] và hầu hết các ứng dụng của chính phủ Hoa Kỳ sẽ được yêu cầu chuyển sang nhóm chức năng băm SHA-2 vào năm 2010.[8]

Tôi nghĩ rằng một vấn đề lớn với nó là có bảng cầu vồng của băm md5 trong những ngày này, do đó, md5 trần rất dễ bị buộc phải chịu.

Hãy xem nó là một công cụ hữu ích cho việc quan sát và vệ sinh các tập dữ liệu phức tạp, nhưng nó không phải là một băm thực sự an toàn nữa. Có thể có các vòng đặc biệt mà bạn có thể nhảy qua như sử dụng cả muối và thực hiện các phép băm md5 lồng nhau để làm cho nó an toàn hơn, mặc dù tôi không có mật mã. Bạn có thể muốn kiểm tra các chủ đề SO khác như this một cho các giải pháp mã hóa tổng thể tốt.

+1

MD5 không bao giờ là 'mã hóa an toàn'; nó không còn an toàn như băm nữa. –

+0

Vâng, tôi không tốt vì không sử dụng thuật ngữ chính xác. Đã chỉnh sửa & thực hiện CW. – Kzqai

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