他の暗号化のニーズに Crypto++ を使用しています。ただし、バイナリ情報を ascii テキストとして保存する必要もあります。そのために、Crypto++ の base 64 フィルターの例を次のコード ブロックに合成しました。
bool saveData(const unsigned char * buffer, size_t length)
{
int lenb64 = (ceil(length / 3.0) * 4) + 1;
unsigned char * temp_str = (unsigned char *)malloc(lenb64);
CryptoPP::ArraySource as(buffer, length, new CryptoPP::Base64Encoder(
new CryptoPP::ArraySink(temp_str, lenb64)));
//do something with temp_str.
free(temp_str); //Then free the tempstr.
//Return true if do something worked, else false.
}
私が抱えている問題は、この操作の後、temp_str がまだゴミでいっぱいになっていることです。私は周りを見回しましたが、上記で行ったこと以外のことを行う例は見つかりません。足りないものはありますか?