《ASCE1885的信息安全》のCrypto++用户手册のbase64.h

Base64Encoder是一个接收任何数据输入并将之转换成base64编码的过滤器,并可选地在每行满72个字符时进行换行。

在现行版本的Crypto++中,类Base64Encoder对象在销毁时并没有执行对缓冲区中的数据进行编码。因此,除了在一个包含Base64Encoder过滤器的过滤器对象链中,当Base64Encoder之前没有其他过滤器时,函数MessageEnd()会被自动调用外,我们必须在数据输入结束时显式地调用函数MessageEnd()

(注意:MessageEnd()nPropagation参数能被使用的情况是:当和Base64Encoder关联的其他过滤器对象不需要message-end信号时)。

下面来看看使用Base64Encoder的实例吧:

// Binary data

 byte const* pbData = ...;

 unsigned int nDataLen = ...;

 

 // Encode with line breaks (default).

 // Ordinarily, we would now have to call MessageEnd() to flush

 // Base64Encoder's buffer. However, the 'true' parameter will cause

 // the StringSource::PumpAll() method to be called, and that method

 // will cause MessageEnd() to be triggered implicitly.

 StringSource(pbData, nDataLen, true,

    new Base64Encoder(

        new FileSink("base64-encoded.dat")));

 

 // Encode without line breaks.

 StringSource(pbData, nDataLen, true,

    new Base64Encoder(

        new FileSink("base64-encoded.dat"),

        false));

 

 

你可能感兴趣的:(base64)