問題タブ [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# - 暗号ストリーム: 読み取りデータ エラー
私はこれを手に入れました(私もcrStream.CopyTo(ms)を試しました):
データ = ストリームであり、バイナリのシリアル化されたクラスが含まれています
実行すると、「ストリームは読み取りをサポートしていません」という例外が発生します。
私が達成しようとしているのは、ストリームからのデータを単純に暗号化することです。だから私は着信ストリームがあり、そのデータを暗号化してメモリストリームに入れたいと思っています。これは、圧縮されてファイルに保存されます。
.net - 最後から不明な長さ x バイトのストリームを切り捨てますか? (。ネット)
最後の 20 バイト (ハッシュ データ) を除いて、長さが不明なストリームを読み取る必要があります。セットアップは大まかに次のとおりです。
ソース ストリーム (SHA1 ハッシュの最後の 20 バイト) -> SHA1 ハッシュ ストリーム (オンザフライで計算し、ストリームの終了時に埋め込まれたストリーム ハッシュと比較) -> AES 復号化ストリーム -> データを処理する...
ソース ストリーム全体を処理する前にバッファリングすることはできません。これは数ギガバイトになる可能性があるためです。すべてオンザフライで行う必要があります。ソース ストリームはシークできません。現在、SHA1 ストリームは最後の 20 バイトをバッファに読み込んでいて、すべてが壊れており、この動作を制御する方法を知りません。
ソース ストリームと SHA1 ストリームの間にラッパー ストリームを挿入し、ソース ストリームを 4096 バイトのチャンクで AES ラッパーに提示するローリング バッファ (?) を実装し、ストリームの終わりを 20 バイト前に「偽造」することを考えていました。最後の読み取りで。20 バイトのハッシュは、プロパティを介して公開されます。
これが最善の解決策でしょうか? また、どのように実装しますか?
大まかなコード フローは次のとおりです (メモリから、おそらくコンパイルされません)。
編集:ストリーム形式は次のとおりです。
c# - CryptoStream を使用して「指定された初期化ベクトル (IV) がこのアルゴリズムのブロック サイズと一致しません」
ファイルの暗号化に CryptoStream を使用する際に問題が発生しました。
コード:
「managed.BlockSize = 16;」を試す または「= 128;」うまくいかないようですが、どうすればエラーを修正できますか?
java - このC#暗号化関数をJavaに変換するにはどうすればよいですか?
以下のC#コードをJavaに変換する必要がありますが、C#のRfc2898DerivedBytesおよびRijndaelに相当するJavaは見つかりませんでした。
[アップデート]
この関数を使用して、新しく作成されたユーザーのパスワードを暗号化する必要があります。暗号化されたパスワードは、C#を含む他の呼び出し元によっても正しく復号化される必要があります。
コメントと回答に記載されているドキュメントに従い、すぐに確認できるように、以下にサンプルを書いてみます。
}
ただし、暗号文の長さは48ですが、実際にはC#ではこの形式のように見えます
WHUNV5xrsfETEiCwcT0M731 + Ak1jibsWEodJSaBraP1cmmkS1TpGWqwt / 6p / a7oy8Yq30ImZPbFF + Y0JNLa3Eu2UGuazZtuhEepUIIdaDEtA2FO0JYIj2A ==
合計120文字。
コードに何か問題がありますか?
c# - 読み取り元の CryptoStream を作成できません - System.NotSupportedException
ファイルを復号化するための非常に単純なコードがあります(トリプルデス暗号化):
そして、それは機能しません。「cs」は無効であり、そこから読み取ることはできません。CryptoStream の作成中には、いくつかの例外があります。
暗号化ストリームを作成して読み取ることができないのはなぜですか? また、この問題を解決するにはどうすればよいですか?
[追加した]
回答ありがとうございます。これで、より明確になりました。しかし - それでも、これを 'cs' から読み取ることはできません。
暗号化:
iv と key が別の場所で定義されています。そして、復号化 - メソッド全体:
ご覧のとおり、暗号化コードには同じキーと iv のようなものがあります。しかし、'cs' ストリームから読み取ることはまだ不可能です - 例外がスローされます。どう思いますか - ここで何が問題なのですか?
これは私のキーであり、使用されたivです:
c# - AeS 暗号化「値を null にすることはできません」
私は最近「CryptoStream」を試していて、テキストを暗号化および復号化するというアイデアに出くわしました。Aesクラス。「名前空間: System.Security.Cryptography」
2 つの入力パラメーター (テキスト、パスワード) を使用してテキストを正常に暗号化する関数を作成した後
テキストの解読の問題が発生しました。
テキストを復号化する私の試みは次のとおりです。
でも; 次のエラーが発生するため、メモリストリームを文字列に変換してから元に戻す方法が無効だったようです:エラー: 値を null にすることはできません\nパラメータ名: inputBuffer
(MemoryStream MS = new MemoryStream(Convert.FromBase64String(EncryptedTxt))) を使用するとエラーが発生します
MemoryStream を文字列に変換して戻すにはどうすればよいですか?
前もって感謝します :-)
c# - このコードがバイト数を知るための代替手段はありますか?
さて、私はファイルを復号化するためのこのコードを持っています
今、私はそれに問題があります、私はバイト長を決定することができません!私は試した
しかし、 Streamはシークをサポートしていないと言っています(thtのようなもの)私もファイルのバイトを数えてみました
しかし、それはファイルが使用中であると言っています...それはFileStreamfsCryptのために実際に使用されています
その間、私はcs.Length
それを機能させるためにいくつかの大きな整数に置き換えました..1000000のように..例外を引き起こさない最大の整数..それはそのように機能します。
c# - Crypto Stream bad usage
I'm trying to implement encryption on my client - server application, but since I implemented it I can't communicate between the applications.
Server:
Client:
Is there anything wrong with my implementation? Especially on the StreamWriter
and StreamReader
parts. Or is the problem elsewhere?
c# - 暗号化されたデータ (AES) のサイズが間違っている
バイト[]の暗号化配列を実行する必要があります。Microsoft で入手可能な例を使用しました。残念ながら、暗号化されたデータは 16 の倍数のサイズに切り捨てられます。データの例でバイト 0 を 8 倍にすると、データは適切に暗号化されます。パディングが設定されていますが、それを変更するものは何もありません。この問題を解決するには、データが途切れないようにします。