Vâng, vấn đề là bạn muốn một cái gì đó độc đáo và ngắn. Bạn thực sự không thể có cả hai.
Biểu thị dày đặc nhất của một số ngẫu nhiên có thể đọc được bằng con người sẽ giống như base64
(thay thế các ký tự hợp lệ cho bất kỳ ký tự nào không có trong tên tệp). Tuy nhiên điều đó vẫn có nghĩa là chỉ có "chỉ" 64 biến thể cho mỗi ký tự trong tên tệp.
Nếu bạn muốn một tên tệp đơn giản, chỉ cần sử dụng số gia tăng và mã hóa nó trong base64 (hãy bỏ nó ra nếu bạn muốn có độ dài tối thiểu cho tên). Nếu bạn muốn nó không thể đoán được, bạn cần một bộ tạo số ngẫu nhiên, nhưng sau đó bạn cần phải chắc chắn để tránh tăng gấp đôi hoặc bạn sẽ kết thúc ghi đè lên tập tin. Cơ hội cho thảm họa này càng cao thì tên càng ngắn.
Bạn có thể sử dụng tùy chỉnh 64 của riêng mình với nhiều ký tự hơn chỉ 64 do mã hóa đó cung cấp, nhưng sau đó bạn phải kiểm tra xem hệ điều hành của bạn xem tên tệp hợp lệ và bạn vẫn phải đảm bảo khách hàng có thể truy cập nó đúng cách (nếu nó không chỉ là một kho lưu trữ dữ liệu tạm thời). Cách dễ nhất để thực hiện việc này là tạo chuỗi bằng mọi ký tự bạn muốn hợp pháp trong đó và sau đó chuyển đổi số của cơ sở thành bất kỳ độ dài nào của chuỗi (có giải thích về chuyển đổi cơ sở trên Google nếu bạn không biết làm thế nào để làm điều đó). Điều đó sẽ cho phép mật độ thông tin thậm chí còn cao hơn và thậm chí là tên tập tin ngắn hơn.
Nguồn
2010-02-25 09:27:08
Tệp được tạo không có phần mở rộng và thêm tiện ích mở rộng theo cách thủ công sẽ phá vỡ bảo đảm duy nhất. – Farhadi