En Fri, 28 Mar 2008 13:22:06 -0300, Clodoaldo <cl*************@gmail.com>

escribió:

On Mar 28, 12:09 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.arwrote:
>En Fri, 28 Mar 2008 10:54:49 -0300, Clodoaldo

<clodoaldo.pi...@gmail.comescribió:

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?

(Any nonnegative integer...)

I mean: For base64 encoding, the length of the output depends solely of

the length of the input. If the input string length is a multiple of 3,

the output length is a multiple of 4, with no "=". If the input length is

one more than a multiple of 3, the output has two "==" at the end. If the

input length is two more than a multiple of 3, the output has only one "="

at the end. In all cases, the output length is a multiple of 4.

[base64 uses 64=2**6 characters so it encodes 6 bits per character; to

encode 3 bytes=3*8=24 bits one requires 24/6=4 characters]

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?

Exactly.

--

Gabriel Genellina