
Hello, Code that pads base64 output with '=' looks in basic_text_oprimitive.ipp like following: std::size_t padding = 2 - count % 3; if(padding > 1) *oi = '='; if(padding > 2) *oi = '='; It will give the following transformations of a few simple strings: "012" -> "MDEy=" "0123" -> "MDEyMw" "01234" -> "MDEyMzQ" "012345" -> "MDEyMzQ1=" Which violates the principle of the base 64 that the encoded output length is multiple of 4 bytes. Right output for the samples above should be: "012" -> "MDEy" "0123" -> "MDEyMw==" "01234" -> "MDEyMzQ=" "012345" -> "MDEyMzQ1" The problem with the code above is that the condition (padding > 2) is never satisfied. I think that the proper code should look like std::size_t padding = 2 - count % 3; if (padding < 2) { *oi = '='; if (padding > 0) *oi = '='; } -- -- Vyacheslav Andrejev -- System Architect, Optech International, Inc.