問題タブ [cryptostream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - .NET の CryptoStream に代わるシーク可能な代替手段はありますか?
.NET の CryptoStream に代わるシーク可能な方法を知っている人はいますか?
代替が「読み取り」モードでのみシークをサポートする場合、または AES256 などに制限されている場合は問題ありません。
c# - C# CryptoStream の結果が期待どおりではない
plainText
長さが8バイトの場合、次のコードで暗号化されたバイト配列が16バイトになる理由を理解しようとしています。結果の長さも 8 バイトになると予想していましたか?
c# - C# で 1 つのファイルに関連付けられた 2 つの CryptoStream
特定のキーを使用して最初の部分を暗号化し、特定のキーを使用して最後の部分を暗号化するファイル「myFile」を作成したいと思います。これまでのところ、次のようなものがあります。
そして、cs1 を使用してファイルの最初の部分に書き込み、次のように cs2 を使用して 2 番目の部分に書き込みたいと思います。
これはエラーなしで続行されますが、2 番目の CryptoStream (cs2) は実際にはファイルに書き込みません。なぜこれが起こるのか誰にも分かりますか?これを行うより良い方法はありますか?ありがとう
編集:CryptoStream を閉じると myFile も閉じるように見えますが、2 つ目の CryptoStream を閉じてから再度開いて開始すると、期待したほどきれいではありませんが、これはうまくいくようです。助けてくれてありがとう!
.net - cryptStream.FlushFinalBlock() は 64 ビット OS でプログラムを強制終了します
複数の Windows7 32 ビット マシンに展開されているプログラムがあります。それらすべてで問題なく動作します。
Windows7 64 ビット マシンにインストールしたところ、cryptStream.FlushFinalBlock() を実行した直後にクラッシュし、次のエラーが発生しました。
プログラム '[2972] Billing.vshost.exe: Managed (v2.0.50727)' はコード -1073740940 (0xc0000374) で終了しました。
また、現在インストールしている他の唯一の OS である Vista 64 ビットでも実行しようとしましたが、まったく同じ問題が発生します。これは try ブロック内にありますが、何もキャッチされません。すぐに失敗します。CryptoStream および 64 ビット OS との既知の互換性の問題はありますか、それとも別の可能性がありますか? それをトラブルシューティングする方法についてのアイデアはありますか?
c# - C# CryptoStream に相当する Java を使用した文字列の暗号化と復号化
モバイル プラットフォーム オペレーティング システム用の Java アプリケーションの開発を検討しています。
Windows 環境用の C# WPF でアプリケーションを開発しました。次のコードを使用して文字列を暗号化および復号化するために、暗号ストリームを使用しています。以下に示すコードは暗号化のみです
暗号化された文字列は、オンライン データベースに格納されます。私ができる必要があるのは、Java アプリケーションがデータベースから文字列を読み取り、C# アプリケーションからの同じ暗号化キーを使用して文字列を復号化できるようにすることです。
ご協力いただきありがとうございます。
c# - 暗号化されたファイルを復号化するときの C# の「Bad Data」例外
ねえ、私は暗号化と復号化に非常に慣れていません。正直に言うと、C#言語でさえもです。基本的に、ログを「保存」してテキストファイルを暗号化するtcpチャットサーバーがあります。これは私が暗号化する方法です (MSDN サンプルに基づく):
メソッド success は、ファイルを完全に暗号化します。これは私の復号化方法です:
また、cryptostream オブジェクトを調べると、「ストリームはシークをサポートしていません」という例外がスローされたと表示されます。
どんな助けでも大歓迎です!
.net - .NET CryptoStream が Dispose() で暗号文の終わりを過ぎて読み取り、爆破する
CryptoStream
.NETクラスの癖のように見えるものに困惑しています。そのDispose()
メソッドは、暗号文の末尾を超えて読み取って、パディングすべきではないパディングを探しCryprographicException
、結果として a をスローします。
以下の C# プログラムは、数バイトを暗号化し、暗号文配列のサイズを変更して、暗号文の末尾の後に (無意味な) バイトが増えるようにしてから、復号化を試みます。顕著な点は次のとおりです。
- 暗号文は 8 バイトで、1 つの 3DES 暗号ブロックです。に 6 バイトしか書き込みません
CryptoStream
(PaddingMode.PKCS7
デフォルト) ため、ブロック内の残りの 2 バイトはパディング値 0x02 で埋められます。 - その後、暗号文配列は 16 バイト (2 つの 3DES ブロック) にサイズ変更されます。2 番目のブロックは、初期化されていないナンセンスであり、有効な暗号出力ではありません。
- 復号化するとき、私は
CryptoStream
;から正確に 6 バイトを読み取りました。意味のない部分に復号化するように要求しているわけではありません。また、平文の最後に到達したタイミングを把握するためにパディングを認識することに依存していません。
問題は、復号化が呼び出されたときにCryptoStream
(ブロックDispose()
の最後で自動的に)、 「Bad Data」というメッセージが表示されることです。そのスタック トレースは、それが を実行していたことを示しており、実際の暗号化されたデータに対応する 8 バイトだけでなく、16 バイトすべてが から消費されました。using
CryptographicException
CryptoStream.FlushFinalBlock()
ciphertextStream
配列のサイズを変更する行を削除するciphertext
と、プログラムは正しく動作します。また、tripleDes.Padding = PaddingMode.None
復号化する前に実行すると、プログラムも正しく動作しますが、基本的にはパディング バイトが平文の一部になるため、実行したくありません。明らかに、問題はパディングに関連しています。私が知る限り、その 2 番目のブロックは復号化されておりPKCS7
、最後に有効なスタイルのパディングが見つかることを期待しています。
CryptoStream
から1 つのブロックを復号化する必要があるだけの読み取りを行っているだけであり、そのブロックは正しくパディングされた最終ブロックであり、CryptoStream
それ以上読み取らずに を閉じると、なぜストリームは別のブロックを読み取る必要があると考えるのでしょうか。さらにパディングを探しますか?の一部としてより多くの入力を消費しようとしているのはなぜDispose()
ですか?
cryptostream - 入力データをスローする CryptoStream.FlushFinalBlock は、完全なブロック例外ではありません
文字列の暗号化と復号化には、次の 2 つの方法を使用します。
特定の長さの文字列を復号化しようとすると、エラーが発生します。文字列が社会保障 # (ダッシュを含む 11 文字) の場合、「入力データは完全なブロックではありません」CryptographicException がスローされます。たとえば、正確に 8 文字の長さの文字列を渡すと、すべてが期待どおりに機能します。PKCS7 のパディングがさまざまな長さに対応できると思いました。簡単なものが欠けていると確信していますが、何時間もグーグルで検索した後、答えがわかりません。
vb.net - VB.Net での単純な暗号化/復号化
VB.Net で文字列を暗号化/復号化する方法を見つけようとしています。
hereの例に従って、次のコードを記述しました(以下)。テキスト ボックス、「暗号化」ボタン、および「復号化」ボタンがあります。テキスト ボックスに何かを入力し (「hello world」など)、[暗号化] をクリックすると、暗号化されたバージョンがテキスト ボックスに表示されます。「復号化」をクリックすると、元の文字列に戻ります。
しかし、暗号化しようとすると、「FlushFinalBlock」を実行しようとするとエラーが発生します。エラーは「暗号化するデータの長さが無効です」です。
上記の例は暗号化のみを扱っており、復号化は扱っていないため、「復号化」の部分は暗闇での完全なショットです。間違っていると確信していますが、「暗号化」を機能させることができないため、まだテストしていません。
なぜこれがうまくいかないのか誰か教えてもらえますか?
c# - RijndaelManaged を使用してデータを復号化できないのはなぜですか?
メッセンジャーと同じようにメッセージを送受信するプログラムに取り組んでおり、送信ボタンでメッセージを暗号化し、受信時にメッセージを復号化する必要があります。RijndaelManagedクラスと次のメソッドを使用して暗号化/復号化しています
と
以前のメソッドを呼び出す方法は次のとおりです。
問題は、暗号化例外を復号化するときに例外が発生することです。復号化するデータの長さが無効です。理由がわかりません。