Một lý do tôi mã hóa các số nhận dạng trong các URL công khai là do tốc độ tăng trưởng của doanh nghiệp không phải lúc nào cũng công khai.
Nếu id hiện tại có thể được suy ra đơn giản bằng cách tạo tài khoản người dùng mới hoặc tải lên hình ảnh, thì người bên ngoài có thể tính toán tốc độ tăng trưởng (hoặc giới hạn trên) bằng cách thực hiện điều này một cách thường xuyên và xem số lượng id đã được sử dụng trong suốt thời gian trôi qua.
Cho dù đó là trì trệ hoặc cho dù nó đang bùng nổ theo cấp số nhân, tôi muốn có thể kiểm soát việc phát hành thông tin này thay vì cho phép các đối thủ cạnh tranh hoặc nhà phân tích kinh doanh có thể suy ra nó.
Ví dụ ngoại tuyến về số này là hóa đơn và số séc. Nếu bạn nhận được thanh toán bởi hoặc trả tiền bởi một công ty một cách thường xuyên, sau đó bạn có thể xem có bao nhiêu hóa đơn hoặc kiểm tra họ viết trong khoảng thời gian đó.
Dưới đây là một CPAN (Perl) mô-đun Tôi khăng khăng rằng scrambles id 32-bit sử dụng hai mã hóa cách dựa trên cá ngừ vằn:
http://metacpan.org/pod/Crypt::Skip32
Đó là một bản dịch trực tiếp của thuật toán Skip32 viết bằng C bởi Greg Rose:
http://www.qualcomm.com.au/PublicationsDocs/skip32.c
Sử dụng phương pháp này ánh xạ từng ID 32 bit vào một số 32 bit tương ứng (có hiệu quả ngẫu nhiên) có thể được đảo ngược lại thành id ban đầu. Bạn không cần phải tiết kiệm thêm gì trong cơ sở dữ liệu của mình.
Tôi chuyển đổi id tranh giành thành 8 chữ số thập phân để hiển thị trong URL.
Khi id của bạn tiếp cận 4,29 tỷ (32 bit), bạn sẽ cần lập kế hoạch mở rộng cấu trúc URL để hỗ trợ nhiều hơn, nhưng tôi thích có URL ngắn càng lâu càng tốt.
Nguồn
2011-10-09 17:36:31
Tôi thích dòng suy nghĩ này. Tôi sẽ phải suy nghĩ lại chiến lược tạo ra id của mình. – Adam