2014-06-18 10 views
5

Ho bisogno di passare i dati in formato crittografato con URL come questo, http://localhost:8080/app/{encrypted_data}Java: esiste un encoder che non includa la barra diretta durante la crittografia dei dati?

Quindi, non v'è alcun encoder che non includono avanti slash (/) nella codifica?

Nota: Non voglio sostituire "/" con un altro carattere, manualmente, dai dati codificati.

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

Modificato: commento da Oleg Estekhin di utilizzare Base64 URL codifica sicura sta anche lavorando bene, sto solo aggiungendo un esempio qui.

ESEMPIO: Codifica:

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

Decodifica:

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

uscita:

c3ViamVjdHM_X2Q9MQ 
subjects?_d=1 
+0

Per semplificare il problema, si potrebbe utilizzare https: // localhost: 8080/app/dati = {} encrypted_data per semplificare il problema. Stai cercando di nascondere i dati o di autenticare se i dati sono stati modificati? – ErstwhileIII

+0

Nessun uomo, il requisito non è quello di utilizzare '?' o passare come parametro URL. In secondo luogo, sto codificando perché sto passando un URL su quel dato {encryped_data}, che contiene ancora un po '/'. : D – anij

+2

Esistono varianti Base64 di sicurezza URL e la maggior parte delle librerie Base64 fornisce un metodo di codifica/decodifica sovraccarico che funziona con tali varianti. Controlla [iHarder Base64 URL_SAFE] (http://iharder.sourceforge.net/current/java/base64/api/Base64.html#URL_SAFE) per esempio. –

risposta

Problemi correlati