Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Base64 for URL variant
Kless
10/1/2008 9:31:00 PM
Does ruby core has any method to create a Base64 for URL variant?
---------
Using a URL-encoder on standard Base64, however, is inconvenient as it
will translate the '+' and '/' characters into special percent-encoded
hexadecimal sequences ('+' = '%2B' and '/' = '%2F'). When this is
later used with database storage or across heterogeneous systems, they
will themselves choke on the '%' character generated by URL-encoders
(because the '%' character is also used in ANSI SQL as a wildcard).
For this reason, a modified Base64 for URL variant exists, where no
padding '=' will be used, and the '+' and '/' characters of standard
Base64 are respectively replaced by '-' and '_', so that using URL
encoders/decoders is no longer necessary and has no impact on the
length of the encoded value, leaving the same encoded form intact for
use in relational databases, web forms, and object identifiers in
general.
---------
http://en.wikipedia.org/w...
2 Answers
ara.t.howard
10/1/2008 9:40:00 PM
0
On Oct 1, 2008, at 3:33 PM, Kless wrote:
> Does ruby core has any method to create a Base64 for URL variant?
CGI.escape( Base64.encode( 'foobar' ) )
is one way...
a @
http://codeforp...
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama
Rob Biedenharn
10/1/2008 10:09:00 PM
0
On Oct 1, 2008, at 5:40 PM, ara.t.howard wrote:
>
> On Oct 1, 2008, at 3:33 PM, Kless wrote:
>
>> Does ruby core has any method to create a Base64 for URL variant?
>
>
>
> CGI.escape( Base64.encode( 'foobar' ) )
>
> is one way...
>
> a @
http://codeforp...
> --
> we can deny everything, except that we have the possibility of being
> better. simply reflect on that.
> h.h. the 14th dalai lama
Here's another:
# base64, but change + and / which are significant to URLs to -
and _,
# respectively, (which is what RFC4648 calls "base64url") and
remove
# embedded newlines (since they are recommended by MIME encoding
and not
# base64, per se)
encoded_token = [cipher_token].pack('m').tr('+/','-
_').gsub("\n",'')
the encoded_token is "safe" for a URL and the cipher_token is
retrieved with:
cipher_token = encoded_token.tr('-_','+/').unpack('m')[0]
The details of the cipher_token aren't important save that it can
contain any byte values.
-Rob
Rob Biedenharn
http://agileconsult...
Rob@AgileConsultingLLC.com
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Base64 for URL variant
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password