《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)