10/10/2018, 00:20

Có ai biết cách mã hóa dữ liệu ngắn hơn MD5 không vậy

Mình dùng MD5 để mã hóa chuỗi ký tự nhưng chuỗi đích vẫn hơi dài. Có ai biết cách nào mã hóa ngắn hơn để xin chỉ giúp.
TheHeTre viết 02:30 ngày 10/10/2018
Nhưng cần ngắn bao nhiêu và để làm gì vậy. Md5() cơ chế mã hóa cực tốt và cũng chỉ có 32 ký tự, không thể coi là dài.

Nếu muốn, có thể tự định nghĩa hàm mã hóa theo ý của mình. Nhưng phải đảm bảo chuỗi mã hóa ra là duy nhất với một đích mã hóa xác định.

Ngoài ra PHP còn có hàm sha1() trả về 20 hoặc 40 ký tự tương ứng với tùy chọn.

Dùng mysql mã hóa có hàm ENCRYPT(), tuy nhiên khuyến cáo không sử dụng với UTF-8.

Nếu chưa thỏa mãn, hỏi google
sacroyant viết 02:33 ngày 10/10/2018
md5 trong php 5+ nếu có thêm 1 tham số thì sẽ trả về 16 ký tự thay vì 32. Lâu rồi không nhớ tham số ấy dùng thế nào, bạn chịu khó coi lại PHP Manual
Thanh duc viết 02:31 ngày 10/10/2018
Thì tự viết 1 hàm cắt chuỗi đã mã hóa MD5 đi, còn bao nhiêu ký tự thì tùy bạn
TheHeTre viết 02:26 ngày 10/10/2018
Được gửi bởi Thanh duc
Thì tự viết 1 hàm cắt chuỗi đã mã hóa MD5 đi, còn bao nhiêu ký tự thì tùy bạn
Một chuỗi ký tự được mã hóa ra có thể duy nhất với độ dài đầy đủ của nó. Nếu cắt lấy một vài ký tự thì có thể 2 từ sau khi mã hóa và cắt có kết quả giống nhau:

VD: cat(md5('a')) sẽ trùng với cat(md5('b')). Như thế, việc bảo mật đã bị giảm xuống cấp thấp.
No Face viết 02:35 ngày 10/10/2018
Cắt đi thì nó ko còn là chuỗi mã hóa ban đầu nữa chứ thấp gì
Vui365 viết 02:23 ngày 10/10/2018
Được gửi bởi TheHeTre
Một chuỗi ký tự được mã hóa ra có thể duy nhất với độ dài đầy đủ của nó. Nếu cắt lấy một vài ký tự thì có thể 2 từ sau khi mã hóa và cắt có kết quả giống nhau:

VD: cat(md5('a')) sẽ trùng với cat(md5('b')). Như thế, việc bảo mật đã bị giảm xuống cấp thấp.
Tôi thử nhưng đâu thấy trùng, nhìn bằng mắt thường cũng thấy không trùng.

Code:
0cc175b9c0f1b6a831c399e269772661
92eb5ffee6ae2fec3ad71c777531578f
Vô Thin viết 02:33 ngày 10/10/2018
Xác xuất trùng là có chứ. Không thì lý do gì để chuỗi dài 32 ký tự. Nếu cắt bớt đi còn cỡ chừng 20 thì có lẽ xác xuất trùng cũng khó, nhưng với những kẻ thích cái trò brute force thì giảm xuống một ký tự thôi là làm cho công việc của họ dễ dàng hơn nhiều rồi. Giả sử chuỗi kia giảm xuống còn quá ngắn chừng 7 ký tự chẳng hạn, có thể bẻ khóa dễ dàng.
lmdat viết 02:31 ngày 10/10/2018
Nếu mã hoá chuổi kết quả ngắn hơn ==> độ bảo mật cũng thấp hơn
tom2 viết 02:25 ngày 10/10/2018
Được gửi bởi Vui365
Tôi thử nhưng đâu thấy trùng, nhìn bằng mắt thường cũng thấy không trùng.

Code:
0cc175b9c0f1b6a831c399e269772661
92eb5ffee6ae2fec3ad71c777531578f
Ông này rảnh quá, người ta ví dụ như vậy thôi. Nếu cắt bớt xâu MD5 đi thì ko còn ý nghĩa của mã hóa 1 chiều nữa
Bài liên quan
0