base64.urlsafe_b64encode and the equal character

Clodoaldo clodoaldo.pinto at gmail.com
Fri Mar 28 12:22:06 EDT 2008


On Mar 28, 12:09 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
wrote:
> En Fri, 28 Mar 2008 10:54:49 -0300, Clodoaldo <clodoaldo.pi... at gmail.com>
> escribió:
>
>
>
> > I'm using a md5 hash encoded with base64.urlsafe_b64encode as a
> > parameter of a URL used to confirm a registration in a site. It has
> > been working great.
>
> > The url is like this:
>
> >http://example.com/ce?i=878&h=kTfWSUaby5sBu9bIfoR87Q==
>
> > Now i need to match that URL in a certain text and i realized that
> > urlsafe_b64encode uses the "=" character so i can't just use \w{24} to
> > match the parameter.
>
> > What i need to know is where can an equal char appear in a
> > urlsafe_b64encoded string?:
>
> > a)only at end;
> > b)both at the end and at the begginig;
> > c)anywhere in the string;
>
> > A sure answer will make my regexp safer.
>
> Only at the end. The encoded string has 4*n chars when the input string
> has 3*n chars; when the input length is 3*n+1 or 3*n+2, the output has
> 4*(n+1) chars right padded with 2 or 1 "=" chars.
> If your input has 3n chars, the output won't have any "="

Thanks. But I'm not sure i get it. What is n?

A md5 digest will always be 16 bytes length. So if i understand it
correctly (not sure) the output will always be 22 chars plus two
trailing equal chars. Right?

Regards, Clodoaldo Pinto Neto



More information about the Python-list mailing list