質問
basesslでエンコードされた文字列をopensslでデコードしようとしています。ただし、5回のうち4回しか機能しません。
デコードされた文字列は常に64文字です。 BIO_read()は常に64を返します。ただし、返されるバッファが64より短い場合があります!
何が悪いのか?常に正しい文字列を取得するにはどうすればよいですか?
解決
str [n] cpyを使用していますか?できません! Base64でエンコードされたデータにはヌル文字を含めることができ、C文字列処理関数は文字列の終わりとして解釈します。
str [n] cpyの代わりにmemcpy、strcmpの代わりにmemcmpなどを使用します。これらの関数では、データサイズを知る必要がありますが、知っていると思います。
また、Cスタイルの文字列などに自信がない場合は、このトピックに関する多くの情報がここにあります。
所属していません StackOverflow