ホームページ > バックエンド開発 > C++ > .NET 6 で復号化された文字列が切り詰められるのはなぜですか?それを修正するにはどうすればよいですか?

.NET 6 で復号化された文字列が切り詰められるのはなぜですか?それを修正するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-31 13:03:11
オリジナル
403 人が閲覧しました

Why Are My Decrypted Strings Truncated in .NET 6, and How Can I Fix It?

文字列の暗号化: .Net 6 での変更のナビゲート

問題

.Net 6 では、カスタム暗号化クラスを使用して復号化された暗号化文字列が切断されるある時点で。これは、完全な復号化された文字列が返される .Net 5 で見られた動作とは異なります。

説明

この不一致は、DeflateStream、GZipStream、そしてクリプトストリーム。以前は、これらのストリームは、読み取り操作に渡されたバッファが完全に満たされるか、ストリームの終わりに到達した場合にのみ読み取り操作を完了していました。

.Net 6 では、この動作が変更されました。読み取り操作は、少なくとも 1 バイトが読み取られたとき、または基になるストリームが 0 を返し、これ以上データが利用できないことを示したときに完了するようになりました。

解決策

提供されたコードでは、エラーが発生します。 Decrypt メソッドでは、実際に読み取られたバイト数を確認せずに Read メソッドが呼び出されます。これにより、復号化された文字列が切り詰められる可能性があります。

問題を修正するには、読み取られたバイト数を検証し、完全なストリームが確実に読み取られるようにする安全策をコードに組み込むことができます。別のアプローチは、データをデコードする前に、Stream.CopyTo メソッドを使用して、暗号化されたすべてのバイトを CryptoStream から別のメモリ ストリームに転送することです。

UTF8 テキストを復号化するためのさらに最適なソリューションは、StreamReader を使用することです。 ReadToEnd メソッド。ストリーム全体を文字列に読み取ります。

これらの対策を採用することで、開発者は正確な復号を保証できます。 .Net 6 の文字列を削除し、予期しない切り捨てを回避します。

以上が.NET 6 で復号化された文字列が切り詰められるのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート