問題タブ [initialization-vector]

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.

0 投票する
1 に答える
705 参照

c# - AES 暗号アルゴリズムで暗号化されたデータに aesIV を添付できますか?

AES アルゴリズムを使用するための標準的な手順に従って、C# で AES を使用して一部のテキストを適切に暗号化/復号化できませんでした。暗号化されたデータとは別にaesIVというデータを添付すればできることがわかりましたが。私の理解では、aesIV は既に暗号化されたデータに埋め込まれています。したがって、セキュリティ上の問題は発生しないと思います。出来るか出来ないかお聞きします。

前もって感謝します。

0 投票する
3 に答える
4319 参照

.net - IVなしで.NETでAES暗号化する方法

Rijndael (AES) を使用して文字列を暗号化/復号化するコードを使用するクラシック ASP アプリケーションのレガシー部分があります。このコードはインターネットで見つかりました(Rijndael AES ブロック暗号 (VB バージョン))。この正確なライブラリを参照し、私とほぼ同じことを尋ねるSOに関する質問をすでに見つけましたが、少なくとも1つの問題があると思われます(バイト配列の先頭に暗号化するデータの長さを追加する以外に) )。vbScript の実装は、暗号化するデータに IV を追加するようにはまったく見えません。したがって、同じ暗号化を RijndaelManaged と一致させることはできません。

  1. 毎回異なる IV を自動的に生成する
  2. 絶対にIVが必要です

IV(空)を指定せずに.Netで何かをAES暗号化できるかどうか誰かが知っていますか?

0 投票する
0 に答える
517 参照

android - AES での初期化ベクトルの長さ

Android で次の暗号化および復号化コード セクションを使用して AES/CBC/PKCS5Padding で AES を使用しました。

IV1 と IV2 は、ランダムに生成された 16 バイトの初期化ベクトルです。暗号化側と復号化側で異なる IV を使用して、元のテキストと復号化されたテキストが異なるかどうかを確認するためにこれを行いました。これにより、復号化されたテキストのバイト数は、最初の 16 バイト以降は元のテキストと同じになります。たとえば、元のテキストが次の場合:

復号化されたテキストは次のとおりです。

ここで * は、IV1 と IV2 が異なるため、誤って復号化されたバイトを示します。

私の質問は: AES と初期化ベクトルを使用して、長さが 16 バイトを超えるテキストを暗号化および復号化するにはどうすればよいですか?

0 投票する
4 に答える
1452 参照

java - 初期化ベクトルを生成するためにSecureRandomが本当に必要ですか、それともRandomで十分ですか?

ストリーム暗号が繰り返されるキー攻撃に対して安全であるためには、IVが繰り返されるべきではありません。しかし、SecureRandomには、その点で単純な非セキュアRandomよりも利点がありますか(または、予測できないシーケンスを生成するためだけですか)?

AES CBCモードで固定サイズのメッセージを使用していて、IVごとに新しいランダムを生成すると仮定すると(現在のナノ時間をシードとして使用)、これにより、SecureRandomと比較してIVが繰り返される可能性が高くなりますか?

0 投票する
14 に答える
529109 参照

python - PyCryptoAES256を使用した暗号化と復号化

メッセージとキーの2つのパラメーターを受け入れるPyCryptoを使用して、2つの関数を作成し、メッセージを暗号化/復号化しようとしています。

私は私を助けるためにウェブ上にいくつかのリンクを見つけました、しかしそれらのそれぞれには欠陥があります:

codekoalaのこれはos.urandomを使用していますが、これはPyCryptoによって推奨されていません。

さらに、私が関数に与えるキーは、期待される正確な長さを保証するものではありません。それを実現するために何ができますか?

また、いくつかのモードがありますが、どれをお勧めしますか?何を使うべきかわからない:/

最後に、IVとは正確には何ですか?暗号化と復号化に別のIVを提供できますか、それとも別の結果が返されますか?

編集:安全ではなかったため、コード部分を削除しました。

0 投票する
1 に答える
1059 参照

c# - 適切なC#RijndaelIVの使用/ストレージ

午後、

したがって、私はこれらすべての暗号化方法と使用法にかなり慣れていません。暗号化の実装を構築し始めたところです。今、私の暗号化と復号化の方法はうまく機能しているようです。私が読むまで、RijndaelManagedクラスでハードコードされたIVを使用することにひどく失敗しました。

暗号化された各ファイルのIVを「暗号化時」に一意に生成し、ファイルの先頭/先頭に保存し、残りの暗号化バイトはこの直後に保存する方がよい(そして安全である)ことをどこでも読んでいます。(私がこれを正しく理解していれば)

ファイルを暗号化するたびに、ファイルの最初の16バイト(クラス、MSDN、Google、およびこのフォーラムの一部の人々が提案したように)にIVを書き込むため、問題を理解するのに非常に苦労しています。その直後に、残りの暗号化されたバイトをファイルストリームに書き込みます。(IVはプレーンテキストで保存されます。または暗号化されていないバイト<これも大丈夫ですか?)

私の問題は、まったく同じキーを使用してファイルを復号化しようとすると失敗することです。復号化(バッファリング)のためにファイルのチャンクを読み取り始める前に、プレーンテキストIVのファイルの最初の16バイトを読み取り、RijndaelManagedクラスで使用しようとします。実例。

これは失敗するようです。確認したところ、どこかで男子生徒のエラーが発生している可能性があります。復号化したい場合、暗号化ファイルから同じ16バイトを読み取れないように見えるためです。

これは、暗号化の前にファイル処理を行うために使用するコードです(暗号化自体ではありません)


そして、これは復号化の前にファイルを処理するための私のコードです(復号化自体ではありません)

それだけだと思いますか?また、「コンソール」やその他の役に立たない呼び出しは、これまでのところ問題を確認して把握するためにのみ行われます。Visual Studios 2010を使用していて、RijndaelManagedクラスを実装しようとしています。

暗号化/復号化メソッドには、キーとIVを含むFileChunks(バイト配列)が渡され、これらはストリームに保存されるバイト配列(Crypted)を返します。

私の質問が明確であることを願っていますか?もっとよく説明しようとしないなら、私はこの特定の問題についての助けを探してどこでも読んだことがありますが、ここに投稿された他のほとんどの質問は私の範囲外です。

私は本当に助けていただければ幸いです、私はどこかでピエロの間違いを犯していると確信しています。

ありがとうございました!!

0 投票する
3 に答える
810 参照

random - 初期化ベクトルの作成

私のプログラムはサーバーに接続します。サーバーの公開鍵はすでに知られています。次に、プログラムは初期化ベクトルとともにAESキーを暗号化し、サーバーに送信します。サーバーはメッセージを復号化し、今後はAESを使用して会話を暗号化します。

私の質問は、IVを生成する方法についてです。私が素朴な方法で現在の時刻を疑似ランダムジェネレーターにシードすると、攻撃者はおそらくIVについていくつかの非常に良い推測をする可能性がありますが、これは私が望んでいることではありません。

ハードウェアランダムジェネレーターは遅いだけでなく、どこでも利用できるわけではないので、別のアプローチを採用したいと思います。クライアントプログラムを最初に起動したとき、TrueCryptと同じように、ユーザーにランダムなマウスの動きをいくつかさせます。これで、マウスの動きによって作成された「ランダムビット」を保存し、ジェネレーターが必要な場合は、それらをシードとして使用します。もちろん、ランダムビットはシードとして使用するたびに更新する必要があります。そして、これが私の質問です。生成された最初の数個のランダムビットを新しい「ランダムビット」として保存することを考えました。(したがって、次にソフトウェアが起動したときにランダムエンジンを初期化するために使用されます。)これが十分にランダムであるかどうか、または疑似ランダムジェネレーターがここで推測可能なパターンを示すかどうかはわかりません。(私はおそらくstd :: mt19937 http://en.cppreferenceを使用します。)。

編集:チェーンモードが変更されるので、「最も高い」要件のモードで機能させたいと思います。私が正しく覚えていれば、これはCBCになります。

注意:私が書いているソフトウェアは純粋に実験的なものです。

0 投票する
2 に答える
9747 参照

java - AES 暗号が DECRYPT_MODE の初期化で InvalidKeyException をスローするのはなぜですか

この init が成功する理由:

これは失敗しますが:

スレッド「メイン」で例外をスローする java.security.InvalidKeyException: パラメータがありません

secretKey は KeyGenerator によって生成され、secureRandom はランダムな静的シード セットを使用して SecureRandom.getInstance("SHA1PRNG") によって生成されます。

ありがとう

0 投票する
3 に答える
2207 参照

encryption - BlowFish の暗号化/復号化 (JBoss 暗号化) に関する問題

これは、BlowFish 暗号化/復号化で直面している問題です。

以下のコードは、BlowFish 暗号化/復号化のテストに使用されます。

今、文字列を暗号化しようとすると

u7mzqw2

私は次のように値を取得します

-7ccb7ff0c2858a

解読しようとすると

-7ccb7ff0c2858a

以下のようなエラーが表示されます。

コード全体はこちら

以下のものが機能するため、私が間違っていなければ、7文字の長さの元の値または/ 8 = 0以外の暗号化された値とは何の関係もありません

Java JBoss -e qwerty

-40e961f375c2eee6

Java JBoss -d -40e961f375c2eee6

クォーター

私は何が欠けていますか??

0 投票する
2 に答える
19012 参照

python - PyCrypto-初期化ベクトルはどのように機能しますか?

PyCryptoがプロジェクトでどのように機能するかを理解しようとしていますが、初期化ベクトル(IV)の重要性を完全には理解していません。文字列をデコードするときに間違ったIVを使用できることがわかりましたが、最初の16バイト(ブロックサイズ)を除いて、メッセージが返されるようです。単にそれを間違って使用しているのですか、それとも何かを理解していないのですか?

デモ用のサンプルコードは次のとおりです。

Python3.3を使用しています。

出力は実行によって異なりますが、次のようになります。b"1^,Kp}Vl\x85\x8426M\xd2b\x1aer secret message. Please don't tell anyone about it or I'll have to shoot you."