質問

basesslでエンコードされた文字列をopensslでデコードしようとしています。ただし、5回のうち4回しか機能しません。

デコードされた文字列は常に64文字です。 BIO_read()は常に64を返します。ただし、返されるバッファが64より短い場合があります!

何が悪いのか?常に正しい文字列を取得するにはどうすればよいですか?

役に立ちましたか?

解決

str [n] cpyを使用していますか?できません! Base64でエンコードされたデータにはヌル文字を含めることができ、C文字列処理関数は文字列の終わりとして解釈します。

str [n] cpyの代わりにmemcpy、strcmpの代わりにmemcmpなどを使用します。これらの関数では、データサイズを知る必要がありますが、知っていると思います。

また、Cスタイルの文字列などに自信がない場合は、このトピックに関する多くの情報がここにあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top