問題タブ [rijndaelmanaged]
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.
rijndaelmanaged - Rijndael 管理: 平文の長さの検出
私は .NET で RijndaelManaged ライブラリを使用する方法を学ぶことに時間を費やしており、MSDN ライブラリからわずかな変更を加えてテキストの暗号化をテストする次の関数を開発しました。
これが私がencryptBytesToBytes_AES()を呼び出している実際のコードです:
swEncrypt.Write(plainText)
ただし、 「暗号化するデータの長さが無効です」という例外がスローされます。
ただし、キー、iv、および平文のサイズが 16 バイト == 128 ビット == aesAlg.BlockSize であることはわかっています。 なぜこの例外がスローされるのですか? StreamWriter が文字列を作成しようとしており (表向きは何らかのエンコーディングを使用)、値として &H0 を好まないためですか?
編集: StreamWriter を使用する以外に、バイト配列を暗号化する新しい方法を考え出す必要があると思います。MSDN ページをざっと見ると、これは最初にある種の文字列変換を行うことが示されていますが、これは望ましくありません。何か案は?
c# - C#でAESアルゴリズムを使用して文字列を復号化するにはどうすればよいですか?
お客様の1人からの暗号化された文字列があります。
この文字列は、JavaのAESメソッドを使用して暗号化されました。
私が持っているのは、キー: "xxxxxxxxxxxxxxxxxxxxxxxx"(24文字)と暗号化されたテキスト: "56e84e9f6344826bcfa439cda09e5e96"(32文字)だけです。(これは本当に私が持っている唯一のデータです)
この文字列を復号化する方法が見つからないようです。
誰かが私に実用的な例を提供してもらえますか?
c# - 多数の独立したファイルを保存するときにC#でRijndaelAlg.CreateEncryptorを正しく呼び出す方法
私の状況では、サーバーに保存されるファイルがいくつかあります。これらの各ファイルは、私が作成しているC#アプリケーションによって作成されています。
背景: このアプリケーションの場合、暗号化に必要な時間は重要ではなく、ファイルは小さい傾向があり、十分なCPUサイクルがあります(データを暗号化または復号化するコンピューターはクライアントのみです)。
各ファイルは無関係であり、システム管理者またはハードディスクを手にした人(悪意のある人を想定)がコンテンツをスヌーピングから保護する必要があります
私の理解では、RijndaelAlgはこの種の操作のための堅実なアルゴリズムですか?これが正しい情報であると仮定して、RijndaelAlg.CreateEncryptor関数を正しく使用する方法を教えてください。
私が望むユーザビリティは、ユーザーがパスワードを入力することです。パスワードが適切なパスワードであると想定します。
私の質問は
ユーザーが入力した文字列(C#'文字列)をbyte []に変換する最善の方法は?他のすべての文字に0が含まれるという問題を回避するには、ハッシュする必要があると思いますか?この変換を行うための最良の方法は何ですか?
IVには何を使用しますか?これは入力する必要のある値であると私は理解しています(MSDNは「null」を渡しても大丈夫だと言っていますが)。この値には何を使用しますか?私の状況を念頭に置いて、独立して復号化する必要のある独立したファイルがたくさんあります。
IVがよく知られている場合、これは問題ですか?(ファイル名は一意の値なので、ファイル名のハッシュを使用できますか)
同じパスワードを使用して多くの独立したファイルを暗号化するためのRijndaelAlgよりも優れたアルゴリズムはありますか?
.net - データがすでに暗号化されているかどうかを確認する方法
現在のプロジェクトで RijndaelManaged を使用してデータを暗号化しています。データが既に暗号化されているかどうかを確認できる方法はありますか?
c# - 大きなファイルにRijndael暗号化を使用する
私は、理想的にはRijndaelを使用して、nの長さのファイルを安全に暗号化/復号化する必要がある状況にありますが、間違いなく256ビット暗号化です。
私は以前に暗号化をいじってみましたが、文字列とバイト配列を暗号化/復号化して非常に満足しています。ただし、ファイルのサイズがわからないため(そして、問題のファイルが非常に大きくなる可能性が非常に高い(〜2.5gb))、それらをバイト配列にロードして、暗号化/復号化することはできません。以前と同じようにシングルバウンド。
そこで、Googleで少し読んだ後、答えはファイルをチャンクで暗号化および復号化することであることがわかったので、次のコードを作成しました。
それはすべて私には「よく見える」が、悲しいことに、見た目はだまされているように見える!
暗号化はエラーなしで機能しますが、復号化中に「cryptoStream.Close()」メソッドは次の例外をスローします。
System.Security.Cryptography.CryptographicExceptionは未処理でしたMessage="パディングは無効であり、削除できません。"
Source = "mscorlib" StackTrace:at System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte [] inputBuffer、Int32 inputOffset、Int32 inputCount、Byte []&outputBuffer、Int32 outputOffset、PaddingMode paddingMode、Boolean fLast)at System.Security.Cryptography .RijndaelManagedTransform.TransformFinalBlock(Byte [] inputBuffer、Int32 inputOffset、Int32 inputCount)at System.Security.Cryptography.CryptoStream.FlushFinalBlock()at System.Security.Cryptography.CryptoStream.Dispose(Boolean disposed)at System.IO.Stream.Close ()
また、暗号化されていないファイルサイズが予想されるファイルサイズと一致していないようです(約8バイトから約60バイトの範囲)
以下のように、RijndaelManagedオブジェクトの作成行を変更して、パディングタイプを含めることにより、例外を「修正」しました。
しかし、ファイルサイズはまだ一致しておらず、予想通り、暗号化されていないばかりのファイルはバロニーです!
私は今、暗号化/復号化で自分の快適ゾーンの外にいることを認めます、そしてそれはおそらく新人の間違いです-しかし私はそれを見つけることができません!
これを解決するための助けをいただければ幸いです。
c# - 暗号化されたファイル サイズの計算が実際のサイズと一致しない
Rijndael を使用して暗号化するファイルのサイズを計算する必要があります。
このサイトとグーグルの他の回答によると、暗号化されたデータの長さを計算する正しい方法は次のとおりです。
私の場合、暗号化されていないファイルの長さは 5,101,972 バイトで、128 ビットの暗号化キーを使用しているため、ブロック サイズは 16 バイトになります。したがって、式は次のとおりです。
暗号化されたファイルの長さは 5,101,984 バイトです。
しかし、暗号化後のファイルのサイズは 5,242,896 で、140,912 バイトという大きな違いがあります。
今..私は明らかに何か間違ったことをしていますが、それが何であるかを理解することはできません. 以下は、暗号化および復号化のテスト コードと、暗号化されたサイズの計算に使用される方法です。
注: 開始時の計算では、暗号化されたファイルの開始時に元のファイルの長さと IV を格納するために使用される余分な 24 バイトは含めていません。必要以上に式を複雑にしたい。
asp.net - シリアライズされた XML を文字列に書き込んでブラウザに表示する
暗号化された XML 文字列として送信する必要があるシリアル化されたオブジェクトがあります。シリアル化されたオブジェクトを整形式の XML ファイルに保存することはできますが、これは私が望むものではありません。サンプル文字列に対して Rijndael の暗号化/復号化が機能するようになりました。
暗号化する前にブラウザに XML 文字列を表示して、正しい暗号化文字列が他のマシンの復号化メソッドに送信されていることをテストできるようにしたいと考えています。
私はこれを1週間打ち負かしており、次のようなSOに関する他の回答に目を向けました。ASP.NETで XMLを返すにはどうすればよいですか?
生成された XML を文字列としてブラウザに表示するための正しい構文を誰かに教えてもらえますか?
[更新] XML をレンダリングしようとしているのは次のとおりです。
[更新 2]
「text/xml」コンテンツ タイプを削除すると、ソースを表示すると次のようになります (これは正しいですか?)。
【アップデート3】
作業バージョン:
c# - AESを使用したC#プライベート/パブリック暗号化
AESで暗号化された公開鍵/秘密鍵を作成する方法を理解しようとしています。私はそれを次のように使用できるようにしたいと思います:
どうすればこのようなものを実装できますか?パブリック/プライベート暗号化を見てきましたが、私が見たすべての例はRSA暗号化を使用しているようです。AESを使いたい。これは可能ですか?
vb.net - RijndaelManaged と PKCS5 パディングを使用して vb.net で文字列を暗号化するにはどうすればよいですか?
次のコードを使用して暗号化を初期化します...
要件は、PKCS5 を使用することです。vb.net のパディング モードのみが含まれます
- ANSIX923
- ISO10126
- なし
- PKCS7
- ゼロ
したがって、PKCS5 の方法はないと思います。それを追加する方法はありますか、それとも自分で暗号化方法を書く必要がありますか? もしそうなら - どうやってそれを書くのですか?それをサポートする信頼できる DLL はありますか?
c# - 暗号C#4.0を使用するときに同じキーを生成する方法
こんにちは私は文字列値を暗号化および復号化しようとしています...私は次のような手動キーを使用してそれを作りました...
そして私はキーとivを作成しました
しかし、同じキーを動的に生成したい...つまり、_saltを動的に生成するにはどうすればよいか...