問題タブ [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.
security - これは「remember me」機能を実装する合理的な方法ですか?
ユーザーがサイトにログインし、「私を覚えている」と言うと、ユーザーの一意の識別子を取得し、キーサイズ 256 の RijndaelManaged でこれを暗号化し、有効期限が設定された httponly Cookie にこれを配置します.. 120 日、サーバーへのリクエストが成功するたびに有効期限が更新されます。
オプションで、ユーザー エージェントと ipv4 アドレスの一部 (最後の 2 オクテット) に基づいて初期化ベクトルを生成します。
明らかに、これには実際の有効期限システムが組み込まれていないため、ユーザーは技術的にこの暗号化されたキーを永久に使用できます (サーバー側のキーを変更しない場合)。
この機能を許可するには、ユーザーがログインをバイパスして一意の ID (GUID) を提供できるようにする必要があるという事実を考慮しましたが、GUID だけでは実際のユーザーの GUID を推測するのは非常に難しいと考えました。しかし、GUIDを生成するボットノットによる攻撃に対してサイトを開いたままにしておきます(合法的なGUIDを見つけることがどれほど現実的かわかりません)..これが、サーバーが暗号化キーを知っている場所に暗号化があり、オプションでivブラウザと ip 部分に固有です。
サーバーがユーザーに関連付けられたチケットを発行し、これらのチケットの有効期限が既知であるため、サーバーが有効期限を管理し続ける別のアプローチを検討する必要がありますか? 有効期限を本当に気にする必要がありますか?私を覚えているのは結局私を覚えているのですか?
謙虚になるのを楽しみにしています;)、乾杯。
c# - Rijndael / C# から VB6 への AES
VB6 でバイト配列を暗号化し、C# (NET 2.0) で復号化する必要があります。そしてその逆(C#からVB6へ)。
C# では RijndaelManaged クラスを使用しました。VB6 では、インターネットからの無料の部分を使用しました。最高のようですhttp://www.frez.co.uk/freecode.htm#rijndael しかし、2つの実装は同じ入力から始まる異なる出力を生成します:(
RijndaelManaged の IV ベクトルに問題があるのかもしれません...わかりません...
VB6 と NET の間で Rijndael/AES を使用したソリューション/経験はありますか? それともトリプルデス....
ありがとうございました
更新: 重要: vb6 アプリが実行されるマシンには、NET フレームワークがありません。そのため、Interop や COM として公開されている NET ラッパー クラスを使用することはできません。:(
exception - 「復号化するデータの長さが無効です。」Rijndael 復号化中の例外
「復号化するデータの長さが無効です」というメッセージが表示されます。メモリ ストリームを復号化しようとすると例外が発生します。私は初心者で、何が悪いのかわかりません。どうしたの?
c# - 復号化するデータの長さが無効です
RijndaelManagedを使用してソケットを介してファイルストリームを暗号化および復号化しようとしていますが、例外にぶつかり続けます
ファイル全体が転送されると、receiveFileのusingステートメントの最後に例外がスローされます。
Webを検索してみましたが、単一の文字列を暗号化および復号化するときにエンコーディングを使用するときに発生する問題に対する回答しか見つかりませんでした。私はFileStreamを使用しているので、使用するエンコーディングを指定しないので、問題はないはずです。これらは私の方法です:
これは私が暗号を設定するために使用する方法です。byte [] initは、生成されたバイト配列です。
誰かが私が間違っているかもしれないことについて考えを持っていますか?
c# - 指定された初期化ベクトル (IV) が、このアルゴリズムのブロック サイズと一致しません
私は基本的な暗号化方法に取り組んでいます。RijndaelManaged を使用しています。このコードはずっと前にどこかから入手しましたが、どこからか思い出せません。
以前はコードが機能していましたが、何かが変わってしまい、よくわかりません。
コードを実行すると、次のエラーが発生します。
指定された初期化ベクトル (IV) が、このアルゴリズムのブロック サイズと一致しません。
これが私のコードです:
どんな助けでも大歓迎です。
c# - バイト配列を文字列に変換するには?
次の関数を使用: http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx
ご覧のとおり、バイト配列が返されるので、バイト配列を文字列に変換したいと思います。
バイト配列から文字列に、またはその逆に変換するにはどうすればよいですか?
c# - RijndaelManaged と AesCryptoServiceProvider が異なる結果を返すのはなぜですか?
これが私が実行した例です。Mode、Padding、BlockSize、KeySize は同じです。同じ初期化ベクトル、キー、およびデータを使用しています。
RijndaelManaged を使用すると、次の暗号化された値が生成されます。 ,0x92,0x72,0x3d,0xc6,0x16,0x2b,0xd8,0xb5,0xd9,0x12,0x85
AesCryptoServiceProvider を使用すると、次の暗号化された値が生成されます。 ,0x75,0xc5,0x9e,0x0d,0x43,0xe9,0x86,0xd4,0xf3,0x64,0x3a
これらの結果を生成するために使用したコードは次のとおりです
私は何かを逃したかどうか疑問に思っているだけだと思います。
更新: CipherModeを CFB に設定しようとすると、 AesManagedが CryptographicException (「指定された暗号モードはこのアルゴリズムでは無効です」) をスローすることが判明しました。AesCryptoServiceProviderも同じようにすべきだと思いますが、そうではありません。FIPS 認定クラスが無効な暗号モードを許可しているのはおかしいようです。
c# - .NET暗号化クラスのスレッドセーフ?
.NETアプリケーションの暗号化をカプセル化する静的ユーティリティクラスを作成するという高レベルの目標があります。内部では、不要なオブジェクトの作成を最小限に抑えたいと思います。
私の質問は、.NETFramework内で対称暗号化を実装するクラスのスレッドセーフとは何ですか? 具体的System.Security.Cryptography.RijndaelManaged
には、ICryptoTransform
それが生成するタイプ。
たとえば、私のクラスコンストラクターでは、次の行に沿って簡単に何かを実行できますか?
このクラス内にキーとIVが存在することは安全であるという問題を回避します。このブロック例では、他の多くの質問が発生します。
EncryptorTransformとDecryptorTransformを繰り返し再利用できますか?およびプロパティは「はい」を意味
*.CanReuseTransform
し*.CanTransformMultipleBlocks
ますが、注意すべき注意事項はありますか?RijndaelManaged
実装しているので、特に外部OSレベルのライブラリに関連付けられているためIDisposable
、ブロック内に配置する傾向があります。オブジェクトをusing
保持しているので、これに関する注意点はありますか?ICryptoTransform
潜在的に最も重要な質問は、高度にマルチスレッド化された環境で、
ICryptoTransform
スレッド間でオブジェクトを共有する際に問題が発生するでしょうか?ICryptoTransform
#3の答えがスレッドセーフではないということである場合、オブジェクトを使用している間、ロックによってパフォーマンスが大幅に低下しますか?(私が推測する負荷に依存します。)RijndaelManaged
毎回新しいものを単純にインスタンス化する方がパフォーマンスが高いでしょうか?または、1つを保存して、毎回RijndaelManaged
生成しますか?new RijndaelManaged().CreateEncryptor(...)
私は、これらが内部でどのように機能するかを知っているか、同様の実装の問題を経験している人がいることを望んでいます。これらの種類のパフォーマンスとスレッド関連の問題の多くは、通常、かなりの量の負荷がかかるまで現れないことがわかりました。
ありがとう!