問題タブ [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 投票する
2 に答える
8289 参照

openssl - 初期化ベクトル (IV) の数値はすべてゼロです

次の文を理解するのに苦労しています:「初期化ベクトル (IV) の数字はすべてゼロです (ASCII 文字 '0' ではありません)。

私の目標は、openssl enc コマンドを使用して、キー K (1234567890 としましょう) とそのような要件を満たす iv を持つ aes-128-cbc を使用してファイルを暗号化することです。

これまでのところ、-iv オプションを付けないようにしましたが、オプション -K を使用する場合はオプション -iv を指定する必要があるため、"iv undefined" と表示されます。-iv 0を使用しようとしましたが、それが正しいかどうかわかりません。

たとえば、次を使用しました。

上記の要件を満たす正しいivを説明するのを手伝ってもらえますか?

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

c# - Rijndael PHP と C# - C# では無効な KeySize ですが、PHP では無効です

私は、C# で Rijndael を使用して文字列 (json) を暗号化しようとし、PHP Web サービスに提供できる文字列を考え出しました。この Web サービスは、IV とマスターキー (それらが認識している) を使用して文字列をデコードします。PHP サービスと対話できる C# コードを作成する必要があります。PHP サービスを制御または所有していません。

暗号化のための PHP コードは次のとおりです。

上記のコードは C# に変換する必要があるため、JSON を暗号化して PHP Web サービスに提供できます。

2 つの問題があります。1 つ目はマスターキーの長さ、2 つ目 (関連している可能性があります) は暗号化されたデータの rawurlencode です (この時点でテストするのは難しいです)。

EncryptStringToBytes はいくつかのチェックを行い、次のコードを使用します (インターネット上の多くの例から抜粋)。

私が得るエラー:

したがって、要するに問題は次のとおりです。

1) なぜ PHP コードは Rijndael 256 (CBC モード) で長さ 29 のキーを受け入れ、私の C# は受け入れないのですか? 私はモードで遊んで、後でパディングを追加し、KeySize を設定しました (既に 256 のデフォルトでした)。ここで何が間違っているのかわかりません。

2) 長さ 32 のキーを使用すると、このキーが受け入れられ、コードが機能します。C# で復号化することもできます (ただし、PHP でこれをテストすることはできません)。問題 1 を解決してから、問題 2 に進みたいと思いますが、誰かがここで理解を深めてくれるかもしれません。暗号化された文字列には、IV に 1 つの '=' が含まれ、暗号化された json に 2x '==' (末尾) が含まれます。パディングなどについて読んだことがありますが、受け取ったPHPの例に「=」記号が表示されないのはなぜだろうと思っていました。繰り返しますが、おそらく問題 1 を修正した後は、これは問題にならないでしょう。

読んでくれてどうもありがとう。昨日試した一日の後、私は多くの異なるアプローチを試してみましたが、うまくいかないようです。

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

.net - AES 256 暗号化時に使用されるソルトを知る

abd123456のようなパスワードを AES-256 暗号化で暗号化しています。Base-64 エンコーディングの後、結果は 44 文字の文字列になります。

IXCgaa5igYxzKTRTP+PMT7Bt9iIWiF6EWLmnKqZtlXI=

.NET Framework のRijndaelManaged AES 暗号化クラスが暗号化中に使用したソルトを知るにはどうすればよいですか?

暗号化されている平文と暗号鍵を知っています。しかし、どのようにしてが使用されているかを知ることができますか?

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

php - openssl_random_pseudo_bytes の出力で bin2hex() を使用するのは安全ですか?

IVとして使用するバイナリの生データではなく、bin2hex()出力で使用し、openssl_random_pseudo_bytes()それらを16進数として使用することは安全で安全ですか?または、これはセキュリティ上のリスクであり、推奨されませんか?mcrypt_create_iv()

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

cryptography - iv パラメータを秘密にしておく場合でも、AES/CBC でランダムにする必要がありますか?

key と iv が秘密にされていても同じである限り、セキュリティに関して問題はありますか? ありがとう。

更新:私はいくつかの調査を行い、iv が使用された理由を学びました。以下の回答で述べたように、これは頻度攻撃に対する保護方法です。また、iv を作成する際には、一意性と予測不能性という 2 つの要件があります。

aes key と iv を作成するために私が考えたアルゴリズムは:

{encryptedmessage, timestamp} としてデータを共有する

このロジックは大丈夫ですか?

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

java - IV で使用すると、BouncyCastle を使用する AES-GCM で「GCM の mac check in failed」がスローされる

私は、暗号化を使用して何かを開発することに比較的慣れていません。現在、BouncyCastle と AES-GCM を使用して文字列を暗号化および復号化するクラスを作成しようとしています。暗号化を実装する際に考慮しなければならないことについて読みました。それらの 1 つは、常にランダム化された IV を使用する必要があるということでした。問題は、IV で Cipher を初期化しようとするたびに、テキストが適切に復号化されないことです。
次の例外がスローされるだけです。

次の方法を使用して、データを暗号化および復号化しています。

cipher.init(...) から「generateIV(cipher)」を削除すると、すべて問題なく動作します。しかし、私が知る限り、それは暗号化を非常に弱めます.

これがコードの小さな間違いなのか、それとも私が何も知らない何か他のものなのか、私にはわかりません。

本当にありがとうございました。

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

cryptography - RSA秘密鍵からのAES鍵とiv

秘密 RSA キーの内容 (秘密指数、モジュラス、素数) と AES-128-cbs キーと iv の間に関係はありますか?

AES を使用して秘密鍵を暗号化できることを知っています。この場合、AES-iv は pem ファイルで提供され、AES-key は秘密パスワードに対する MD5 と AES-iv の最初の 8 バイトを使用して計算されます。

ただし、AES で暗号化されたデータと、読み取ることができる秘密の RSA キーがあります。おそらく内部の素数から、RSAキーのコンテンツからAESキーとAES-ivを導出する方法に関する標準はありますか。通常使用される標準はありますか?

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

encryption - keydata and IV for aes in tcl

I have a tcl/tk based tool, which uses network password for authentication. Issue is that, it is saving password in the logs/history. So objective is to encrypt the password.

I tried to use aes package. But at the very beginning aes::init asks for keydata and initialization vector (16 byte). So how to generate IV and keydata. Is is some Random number? I am a novice in encryption algorithms.