2014-06-18 13 views
5

tôi cần phải vượt qua dữ liệu trong định dạng mã hóa với URL như thế này, http://localhost:8080/app/{encrypted_data}Java: Có bộ mã hóa nào không bao gồm dấu gạch chéo chuyển tiếp trong khi mã hóa dữ liệu không?

Vì vậy, là có bất kỳ bộ mã hóa mà sẽ không bao gồm dấu gạch chéo (/) trong mã hóa?

Xin lưu ý: Tôi không muốn thay thế '/' bằng một ký tự khác theo cách thủ công từ dữ liệu được mã hóa.

.............................................. .................................................. ..............

được sửa đổi: bình luận từ Oleg Estekhin của việc sử dụng URL Base64 an toàn Encoding cũng đang làm việc tốt, tôi chỉ thêm một ví dụ trên đây.

VÍ DỤ: Mã hóa:

String str = "subjects?_d=1"; 
byte[] bytesEncoded = Base64.encodeBase64URLSafe((str.getBytes())); 

Giải mã:

Base64 decoder = new Base64(true); 
byte[] decodedBytes = decoder.decode(new String(bytesEncoded)); 
System.out.println(new String(decodedBytes)); 

Output:

c3ViamVjdHM_X2Q9MQ 
subjects?_d=1 
+0

Để đơn giản hóa vấn đề của bạn, bạn có thể sử dụng https: // localhost: 8080/app/data = {} encrypted_data để đơn giản hóa vấn đề của bạn. Bạn đang tìm cách ẩn dữ liệu hoặc xác thực xem dữ liệu đã được thay đổi chưa? – ErstwhileIII

+0

Không có người đàn ông, yêu cầu không sử dụng '?' hoặc chuyển qua tham số URL. Thứ hai, tôi đang mã hóa vì tôi đang chuyển một URL trên {encryped_data} đó, một lần nữa chứa một số '/'. : D – anij

+2

Có các biến thể Base64 an toàn cho URL và hầu hết các thư viện Base64 cung cấp các phương thức mã hóa/giải mã quá tải hoạt động với các biến thể như vậy. Kiểm tra [iHarder Base64 URL_SAFE] (http://iharder.sourceforge.net/current/java/base64/api/Base64.html#URL_SAFE) chẳng hạn. –

Trả lời

Các vấn đề liên quan