問題タブ [encryption-symmetric]

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 投票する
0 に答える
1214 参照

security - How to choose an AES padding mode?

Depending on the framework you are using, there are various padding modes that can be used with AES encryption. For example, with .NET we can choose PKCS7, ISO10126, ANSIX923, Zeros or None. Similar options are available in Java.

I understand that the encryptor and decryptor need to use the same mode to be interoperable.

What considerations are there when choosing a padding mode? With the exception of 'None', does it even matter which you choose? Can some be considered more secure than others?

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

wcf - AES256 を使用して WCF でハードコードされた対称暗号化を設定するにはどうすればよいですか?

AES256 標準でハードコードされた対称キーを使用して、暗号化されたメッセージに対して WCF でチャネル セキュリティを定義するにはどうすればよいですか? 私は証明書を使用したくありません。これが「脆弱な」セキュリティ慣行であることは承知しています。

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

sql-server - 異なるパスワードで SQL Server 2008 対称キーを開きますか?

私のシナリオでは、非対称キーを暗号化するために対称キーを使用します。後者は、選択された人々の輪だけが利用できるはずの機密データを暗号化するために使用されます。

対称キーはパスワードで暗号化されており、このキーを開くためにすべてのパスワードだけで十分であるように、このキーに複数のパスワードを設定する可能性が必要です。

を使用して既存の対称鍵にパスワードを追加できる可能性があることを知っています

問題は、パスワードによる新しい暗号化を追加することですでにそれが行われており、ここにあるすべてのパスワードでそれが開かれるかどうか、またはキーが新しいパスワードによって追加で暗号化されているだけで、すべてのパスワードおよび/または他の暗号化データ (証明書、その他) を提供する必要があるかどうかです。キーなど)このキーを開くには?

後者が当てはまる場合、同じ対称キーの複数の複製を作成するにはどうすればよいですか?ただし、パスワードは異なります。

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

objective-c - Objective-C RC4 復号化

私はObjective-Cは初めてですが、経験豊富な開発者(C#)ですが、これを理解できません:

RC4 で暗号化された文字列があり、iPad (iOS 5.0) で Objective-C を使用して復号化する必要があります。私はネット上で動作する例を探しましたが、エンドツーエンドで動作する例を見つけることができませんでした。以下のコードは、復号化された文字列を正しく返さないだけでなく、実行するたびに異なるものを返すため、ポインターがどこかで解放されているように感じます。

注:問題があるかどうかはわかりませんが、文字列はhttp://archive.plugins.jquery.com/project/RC4を使用して暗号化された後、Objective-C からアクセスしている Sqlite データベースにテキストとして保存されました。 (アーキテクチャがごちゃごちゃしているように聞こえますが、現時点では変更できません。)

私が使用しているコードは次のとおりです (RC4 暗号化から取得 - CommonCrypto (Objective-C) vs PHP ):

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

c# - C# と SymmetricAlgorithm による非常に単純な暗号化

非常に単純な暗号化/復号化方法を探しています。常に同じ静的キーを使用します。私はこのアプローチのリスクを認識しています。現在、私は次のコードを使用していますが、同じ文字列を暗号化および復号化した後、同じ結果を生成しません (文字列の途中にゴミがあります)。

必要なものは何でも変更できますが、制限はありません(ただし、変数を共有せずに暗号化する方法と別の方法で復号化する方法が必要です)。

ありがとう。

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

c# - RijndaelManaged 暗号化での一貫性のない動作

RijndaelManaged で奇妙な問題が発生しています。基本的に、CipherMode、Padding、IV、および Key を設定する新しいインスタンスがあります。次に、別のインスタンスを作成し、次のプロパティの同じ値を元のインスタンスから 2 番目のインスタンスに割り当てます: Mode、Padding、KeySize、FeedbackSize、BlockSize、IV、および Key。

インスタンス 1 からインスタンス 2 にすべてのプロパティ値をコピーすると、同じ結果が得られるはずですよね? 違う!両方のインスタンスの GetHashCode() は何らかの形で異なりますが、それらのプロパティ (上記の名前) をダンプすると、それらはすべて同じになります。

ブロック サイズ (16 バイト、128 ビット) に等しい長さのテキストの文字列を暗号化すると、どちらも同じ結果になります。入力が BlockSize より小さい場合、暗号化の結果は同じではありません。

最初の Rijndael インスタンスを作成するためにこれを持っています。

例のために文字列を暗号化するには:

それで、これをしてください

私は cyper1 == cypher2 と cypher11 != cypher21 も rm1.GetHashCode() != rm2.GetHashCode() を取得していますが、すべてのパブリックパラメーターは同じです!

また、両方のインスタンスのすべてのパブリック プロパティをダンプして、何か不足していないかどうかを確認しましたが、すべての値は同じです。

0 投票する
6 に答える
347342 参照

php - Simplest two-way encryption using PHP

What is the simplest way of doing two way encryption in common PHP installs?

I need to be able to encrypt data with a string key, and use the same key to decrypt on the other end.

The security isn't as big of a concern as the portability of the code, so I'd like to be able to keep things as simple as possible. Currently, I am using an RC4 implementation, but if I can find something natively supported I figure I can save a lot of unnecessary code.

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

android - メッセージごとに 1 つのキーとランダムな IV を使用する Android AES パスワードベースの暗号化

私は現在、この投稿に触発されて、Android で AES 256 を使用して対称的な暗号化/復号化を実装しています: Java 256bit AES Encryption。私の実装の目的は、データベース内のデータを暗号化することです。

キーの生成には、char[] パスワードを受け取る次のコンストラクターを使用します。

そのため、Android でアクティビティを開始すると、Cryptography クラスの新しいインスタンスが初期化され、生成されたキーが取得されます。ソルトは、16 バイトの固定ランダム byte[] です。つまり、常に同じキーを取得します。その理由は後ほど。

1 つのアクティビティでオブジェクトを取得した後、次の暗号化および復号化メソッドを常に同じキーで使用できます。

ご覧のとおり、メッセージを暗号化するたびに、暗号文とともに新しい IV を保存します。

結論として、データベース テーブルのすべてのフィールドに 1 つの暗号化キー、1 つのランダム ソルト、および新しい IV を使用します。

最初に、データベース テーブルの 1 つのフィールドを暗号化し、必要なソルトと IV を暗号文と共に、または少なくとも 1 つのテーブル行に保存するたびに、新しいソルトと新しい IV を使用して新しいキーを生成したいと考えました。しかし、上記のようにした理由は、Android デバイスでキーを生成するには時間がかかるためです。エミュレーターでテストしましたが、キーの生成に約 2 秒かかりました。これが、Activity の開始時にキーを 1 つだけ生成した理由です。

最後に私の質問: 私のアプローチでは、キーを 1 つだけ使用するだけで十分に安全ですが、メッセージごとに新鮮なランダム IV を使用できますか? 現在のところ、パフォーマンスとのバランスを保つことによって、可能な限り安全にする別の方法は見当たりません。

私が書いたことが十分に明確であり、誰かがそれについてアドバイスをくれることを願っています.

敬具

ゾイドバーグ

0 投票する
5 に答える
5370 参照

php - PHPでの双方向暗号化

PHPで双方向暗号化を行う必要があります。基本的に私がやりたいのは、文字列(Marshallたとえば)を奇妙なもの(s2323sdavrt44たとえば)に変換してから、その(s2323sdavrt44)をクリアテキストの文字列(Marshall)に変換することです。

どうすればこれを達成できますか?いいえ、パスワードや div id 属性に対してこれを行っているわけではないので、後で SQL クエリ用に分割できます。

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

encryption - Microsoft CNG BCryptEncrypt が暗号文 == 平文を返す

対称暗号化のために CNG の AES に AES-OFB ラッパーを実装しようとしています。

理解できない問題が発生しました... AES アルゴリズム ハンドル (BCRYPT_AES_ALGORITHM) を作成し、AES キーをインポートしました。次に、平文/暗号文の XOR で使用する 16 バイトのキーストリームを生成しようとします。このメカニズムを初めて実行すると、keyStreamPtr はランダムなバイト ストリームから別のストリームに変更されますが、これを 3 回目に行うと (キーストリームの 16 バイトの 3 番目のセット)、同じ出力が得られ始め、それが永久に発生します。

誰もこのようなものを見たことがありますか?なぜ AES は、入力された平文と完全に同一の暗号文を返すのでしょうか? 繰り返しますが、これは AES-OFB 実装のためのものです...おそらく私は何か間違ったことをしていますか?