2009-08-14 4 views

risposta

10

Sembra che ci siano solo 73 caratteri che possono essere utilizzati senza caratteri di escape in un URL. Se questo è il caso, è possibile convertire il numero di 128 bit in base 73 e avere un URL di 21 caratteri.

SE è possibile trovare 85 caratteri legali, è possibile ottenere un URL di 20 caratteri.

+0

Quindi stiamo salvando 9 caratteri nell'URL? Trovo in realtà più facile leggere/recitare l'esadecimale di qualcosa di simile a 00amyWGct0y_ze4lIsj2Mw – hometoast

+0

@hometoast: Sì, beh, quello non sembrava essere un vincolo per l'OP. ;) – retracile

+1

Ho usato una codifica Ascii85 per scrivere un Guid su una colonna del database in 20 caratteri ASCII. Ho pubblicato il codice C# nel caso sia utile. Il set di caratteri specifico potrebbe essere diverso per una codifica URL, ma puoi scegliere qualsiasi carattere adatto alla tua applicazione. È disponibile qui: http://stackoverflow.com/questions/2827627/what-is-the-most-efficient-way-to-encode-an-arbitrary-guid-into-readable-ascii-3/4211088#4211088 – sheikhjabootie

5

Un GUID appare così c9a646d3-9c61-4cb7-BFCD-ee2522c8f633 - che è 32 cifre esadecimali, ogni codifica 4 bit, in modo da 128 bit in totale

Una codifica base64 utilizza 6 bit per simbolo, che è facile per ottenere con caratteri sicuri URL di dare una stringa con 22 caratteri codificati. Come altri hanno notato, è possibile con 73 simboli url sicuri e codificati come numero base 73 per dare 21 caratteri.

+0

Come hai ottenuto il bit "6 bit di un URL sicuro"? –

+0

Non ci sono 127 caratteri sicuri per URL, quindi supponiamo che 6 bit siano il massimo. –

+0

6 bit è base64, a cui il collegamento originale è andato. Se è possibile ottenere più di 64 caratteri, ad esempio 85, è possibile convertire il numero a 128 bit in base 85 e ottenere fino a 20 caratteri. Non sarà bello come base64. – retracile