2011-09-22 25 views
5

Trong khi nâng cấp từ Zend Server CE 5.1 ​​lên Zend Server CE 5.5, PHP cũng đã nâng cấp từ 5.3.5 lên 5.3.8. Sau khi chuyển đổi này chức năng đăng nhập cho một ứng dụng zend tôi đang làm việc trên đột nhiên bị phá vỡ.Mật mã PHP() với sha256 trong Zend Server CE 5.5 cắt bớt muối được cung cấp

Cố gắng gỡ lỗi, có vẻ như việc triển khai crypt() không phản ánh hướng dẫn sử dụng PHP hoặc tôi đã hiểu nhầm. Nếu tôi sẽ mạo hiểm một dự đoán, đó là sau này.

Tôi đang sử dụng muối dài 16 ký tự như một phần của muối lớn hơn sử dụng SHA256, được sử dụng làm ví dụ trong hướng dẫn sử dụng PHP.

$password = //string entered at login 
$salt = '$5$rounds=250000$1234abcd5678defg$'; 

Sau khi tôi đã băm mật khẩu vào

$hash = crypt($password, $salt); 

tôi nhận được một chuỗi như thế này là giá trị trả về:

$5$rounds=250000$1234abcd5678$tI.Oiz.YwWjIwT3K.SLU8SwUZ9J0/odBCkbE6t0igeB 

gì baffles tôi là muối 16 ký tự, đó là một phần của phần lớn hơn (1234abcd5678defg ở trên), bây giờ bị cắt ngắn thành 12 ký tự.

Đây có phải là mục đích không? Chức năng crypt() cũng có vẻ trả về các kết quả khác nhau hơn so với trước đây - là thông thường giữa các phiên bản của PHP? Không có gì trong số changelog đề xuất bất kỳ thay đổi căn bản nào đối với các thuật toán mã hóa.

+0

Cũng đã xảy ra lỗi nghiêm trọng trong 5.3.7 về hàm crypt. Nó đã được sửa lại vài ngày sau đó trong 5.3.8. Có lẽ bạn nên tìm các bài viết về điều đó, xem liệu có thể liên quan đến vấn đề của bạn không? Và kiểm tra lại bạn không có PHP 5.3.7 nhưng 5.3.8. –

+0

Theo cả hai phpinfo() và đầu ra trong terminal khi chạy php hoặc php-cli nói đó là zend tối ưu hóa php 5.3.8. Ngày xây dựng là 24 tháng, do đó, nó có vẻ là chính xác. Cam kết mới nhất đối với crypt_sha256.c, dường như đã được bao gồm trong 5.3.7 là nó đã khắc phục vấn đề với việc cắt bớt muối. Cùng một vấn đề tôi có nhưng được cho là đã được sửa chữa. Tôi đang tìm một kênh thích hợp cho các lỗi tiềm năng trong PHP trước khi tôi nộp một báo cáo lỗi thích hợp. – Patrick

+0

Tôi tin rằng tôi đã đọc được vấn đề là mật mã chỉ trả về muối, không phải dữ liệu được mã hóa, mà chỉ khi sử dụng MD5. –

Trả lời

2

Đây là phản hồi tôi nhận được từ Zend:

Cảm ơn bạn đã phản hồi. Vấn đề bạn báo cáo được coi là lỗi. Các nhà phát triển sẽ cung cấp bản sửa lỗi sẽ được đưa vào một trong các bản phát hành sắp tới của sản phẩm.

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