Tôi đang cố gắng triển khai bộ mã hóa chuỗi đơn giản để làm xáo trộn một số phần của chuỗi URL (để ngăn chúng bị người dùng nhỡ). Tôi đang sử dụng mã gần giống với mẫu trong JCA guide, ngoại trừ:Tránh ngắt dòng trong chuỗi URL được mã hóa và mã hóa
- sử dụng DES (giả sử đó là một chút nhanh hơn so với thuật toán AES, và đòi hỏi phải có một phím nhỏ hơn) và
- Base64 en/giải mã chuỗi đảm bảo rằng nó vẫn an toàn cho một URL.
Vì lý do tôi không thể hiểu được, chuỗi đầu ra kết thúc bằng dấu ngắt dòng, mà tôi cho là sẽ không hoạt động. Tôi không thể tìm ra nguyên nhân gây ra điều này. Đề xuất về nội dung nào đó tương tự dễ dàng hơn hoặc gợi ý đến một số tài nguyên khác để đọc? Tôi đang tìm tất cả các tham chiếu mật mã trên đầu của tôi (và quá mức), nhưng việc triển khai ROT13 đơn giản sẽ không hoạt động vì tôi muốn xử lý một bộ ký tự lớn hơn (và không muốn lãng phí thời gian thực hiện một cái gì đó có khả năng có vấn đề với các ký tự tối nghĩa mà tôi không nghĩ đến).
mẫu đầu vào (không ngắt dòng):
http://maps.google.com/maps?q=kansas&hl=en&sll=42.358431,-71.059773&sspn=0.415552,0.718918&hnear=Kansas&t=m&z=7
Sample Output (ngắt dòng như hình dưới đây):
GstikIiULcJSGEU2NWNTpyucSWUFENptYk4m5lD8RJl8l1CuspiuXiE9a07fUEAGM/tC7h0Vzus+
jAH6cT4Wtz2RUlBdGf8WtQxVDKZVOzKwi84eQh2kZT9T3KomlnPOu2owJ/2RAEvG+QuGem5UGw==
đoạn mã hóa của tôi:
final Key key = new SecretKeySpec(seed.getBytes(), "DES");
final Cipher c = Cipher.getInstance("DES");
c.init(Cipher.ENCRYPT_MODE, key);
final byte[] encVal = c.doFinal(s.getBytes());
return new BASE64Encoder().encode(encVal);
bạn đã cố gắng chỉ hoàn nguyên op mã hóa của mình và xem liệu nó hoạt động? – Snicolas
Trường hợp nào mà lớp BASE64Encoder đến từ đâu? – leonbloy
@leonbloy Tôi đã nhập sun.misc.BASE64Decoder, mà tôi đã tìm thấy nhờ [bài đăng này] (http://stackoverflow.com/questions/2267036/work-sun-misc-base64encoder-decoder-for-getting- byte) không phải là một ý tưởng hay. – milletron