Nếu bạn có dữ liệu nhị phân mà bạn cần mã hóa, bạn sử dụng lược đồ mã hóa nào?Bạn sử dụng lược đồ mã hóa văn bản nào khi bạn có dữ liệu nhị phân mà bạn cần gửi qua kênh ascii?
tôi biết về:
- Hex encoding. Rất đơn giản, nhưng khá tiết, mở rộng một byte thành hai.
- Base 64. Phổ biến nhất, không quá chi tiết, mở rộng ba byte thành bốn.
- Base 85. Không phổ biến, ít tiết hơn nữa, mở rộng bốn byte thành năm.
Có phương án mã hóa nào khác đang được sử dụng phổ biến không? Nếu vậy, những lợi thế và bất lợi là gì?
Chỉnh sửa: Điều này hữu ích, ví dụ: khi cố gắng lưu trữ dữ liệu tùy ý trong cookie. Cookie chỉ có thể lưu trữ văn bản, không phải dữ liệu tùy ý, vì vậy bạn cần phải chuyển đổi văn bản theo một cách nào đó, tốt nhất là bằng cách chuyển đổi nó trở lại. Hơn nữa, giả sử rằng bạn đang sử dụng một máy chủ không trạng thái để bạn không thể lưu trạng thái trên máy chủ và chỉ cần đặt một số nhận dạng vào cookie. Tất nhiên, nếu bạn làm điều này, bạn cũng sẽ cần một số cách để xác minh rằng những gì người dùng đang trả lại cho bạn là những gì bạn đã chuyển cho người dùng, ví dụ như một chữ ký. Ngoài ra, vì sự đồng thuận hiện tại là bạn nên sử dụng base64 vì nó phổ biến, tôi cũng sẽ chỉ ra rằng là những gì tôi sử dụng ... Tôi chỉ tò mò nếu có ai sử dụng bất cứ thứ gì khác, và nếu có , tại sao.
Chỉnh sửa: Chỉ trong trường hợp ai đó tình cờ gặp vấn đề này, nếu bạn muốn sử dụng Base64 để lưu trữ dữ liệu trong cookie, bạn cần sử dụng a modified Base64 implementation. Xem this answer vì lý do tại sao.
Ở nơi đầu tiên, tại sao bạn cần mã hóa nó? Bạn có bị ràng buộc vào kênh ASCII không? –
Base64 giành chiến thắng vì nó phổ biến đến mức tôi không phải lo lắng về việc tung bộ mã hóa/giải mã của riêng mình. Tôi đã không chạy vào bất kỳ ứng dụng mà tôi đã lo lắng về việc tiết kiệm băng thông hoặc không gian tệp trong dữ liệu nhị phân được mã hóa. – jball
@Paul, tôi sẽ chuyển thành @jball được đề xuất và chọn base64; nhưng, vì bạn đang gửi dữ liệu cho khách hàng và hy vọng rằng dữ liệu _same_ sẽ quay trở lại, bạn nên biết rằng có thể bị giả mạo ở phía khách hàng. –