Nếu ứng dụng của bạn chỉ calcullating md5 khi ai đó đăng ký trên trang web của bạn hoặc đang đăng nhập, sở hữu nhiều cuộc gọi đến md5, bạn sẽ thực hiện mỗi giờ? Vài trăm? Nếu vậy, tôi không nghĩ thực sự nhỏ sự khác biệt giữa PHP và MySQL sẽ rất đáng kể.
Câu hỏi nên giống như "tôi đặt thực tế là mật khẩu được lưu trữ bằng md5 ở đâu" hơn là "điều gì khiến tôi hầu như không giành được gì".
Và, như một phụ chú, một câu hỏi khác có thể là:bạn có đủ khả năng chi tiêu các nguồn lực cho loại tính toán đó ở đâu? Nếu bạn có 10 máy chủ PHP và một máy chủ DB đang tải nặng, bạn sẽ có câu trả lời cho mình;-)
Nhưng, chỉ để giải trí:
mysql> select benchmark(1000000, md5('test'));
+---------------------------------+
| benchmark(1000000, md5('test')) |
+---------------------------------+
| 0 |
+---------------------------------+
1 row in set (2.24 sec)
Và trong PHP:
$before = microtime(true);
for ($i=0 ; $i<1000000 ; $i++) {
$a = md5('test');
}
$after = microtime(true);
echo ($after-$before) . "\n";
cho:
$ php ~/developpement/tests/temp/temp.php
3.3341760635376
Nhưng có lẽ bạn sẽ không tính toán một triệu md5 như thế này, phải không?
(Và điều này không liên quan gì đến việc ngăn chặn việc tiêm SQL:chỉ cần thoát / trích dẫn dữ liệu của bạn! luôn luôn! hoặc sử dụng các câu lệnh đã chuẩn bị)