私はbase64でエンコードされた文字列をopensslでデコードしようとしています。ただし、5のうち4回しか動作しません。Base64のデコード - 不正な文字列の長さ
デコードされた文字列は、常に64文字の長さにする必要があります。 BIO_read()は常に64を返します。ただし、返されるバッファが64より短いこともあります。
何が間違っていますか?どのように私はいつも正しい文字列を得ることができますか?
私はbase64でエンコードされた文字列をopensslでデコードしようとしています。ただし、5のうち4回しか動作しません。Base64のデコード - 不正な文字列の長さ
デコードされた文字列は、常に64文字の長さにする必要があります。 BIO_read()は常に64を返します。ただし、返されるバッファが64より短いこともあります。
何が間違っていますか?どのように私はいつも正しい文字列を得ることができますか?
あなたはstr [n] cpyを使用していますか?できません! Base64でエンコードされたデータには、C文字列処理関数がend-of-stringとして解釈するヌル文字を含めることができます。
strcmpの代わりにstr [n] cpy、memcmpの代わりにmemcpyを使用します。これらの関数ではデータサイズを知る必要がありますが、はとなります。
また、Cスタイルの文字列などについてあまり自信がない場合は、ここでそのトピックに関する豊富な情報があります。
"返されたバッファ"とはどういう意味ですか?バッファ*をBIO_readに渡します。サンプルコードが役に立ちます。 –
私はBIO_readが宛先に何を入れるのかを意味します。 とにかく、私は自分の問題をシングルキャラクターに追跡しました。 BIO_readが終端と同じcharを返すことがあるようです。それは文字列を殺す... – Mantas