ホームページ > バックエンド開発 > PHPチュートリアル > 暗号化アルゴリズムは、各言語で異なる原則とソリューションを設計しています。

暗号化アルゴリズムは、各言語で異なる原則とソリューションを設計しています。

WBOY
リリース: 2016-06-13 12:23:57
オリジナル
1087 人が閲覧しました

Atitit.暗号化アルゴリズムの設計 言語ごとに異なる原理とソリューション java php c#

Atitit.暗号化アルゴリズム des aes 異なる言語原則と解決策 java php c#

1暗号化アルゴリズムのパラメータ:: アルゴリズム/モード/パディング 1

2標準暗号化API使用プロセス 1

2.1 MD5—— 16 ビット 長さが 128 (または他の指定された長さ) になるように キー をパディングします2

2.2. key2 を生成します

2.3. 操作2

3Aes暗号化原理アーキテクチャ図 2

4キー が矛盾しています4

5暗号化モード4

5.1. Ecb 4

5.2. 3.2 CBC モード:5

5.3. OFBモード: 6

5.4. 3.3 CFBモード: 7

6パディングメソッド8

6.1.1. パディングメソッド アーキテクチャ図9

7アルゴリズム/モード/パディング 比較表9

8.16暗号化後の長さバイト109Java の暗号化シリーズ

119 .1. セキュリティ プロバイダー アーキテクチャ

119 1.1. エンジンとアルゴリズム。エンジンは、暗号化、復号化などの操作として理解できます。 >9.2.

3.2.12 SecureRandom クラス12 9

.3. 🎜> キーインターフェース12 9

.4 .

3.4.3 SecretKeySpecクラス141

0.

AesFAQ アルゴリズム ソリューション 14

11. 参照15

1. 暗号化アルゴリズムのパラメータ: Algorithm/Mode/Padding

/* モデル化されたキーの概念。キーは異なるエンティティ間で送信される必要があるため、すべてのキーはシリアル化可能である必要があります*/

文字エンコード方式、特に中国語をキーとして使用する場合。

2. 標準暗号化API利用プロセス

2.1. MD5——16bit パディングキー 、長さが 128 (または他の指定された長さ)

key =MD5.getMD5_16bit(キー,"utf-8" );

バイト[] バイト = key.getBytes ();

SecretKeySpec

keySpec = 新しい SecretKeySpec(バイト, "AES"); return keySpec;

2.2. キー

2.3. 操作

著者:: Old Wow's Claw Attilax Ailong、メール:[email protected]

転載する場合は出典を明記してください: http://blog.csdn.net/attilax

3. Aes暗号原理アーキテクチャ図

AES対称暗号化:

> のアルゴリズムが矛盾している

ことが判明キーを指​​定したことです の方法が間違っています は文字列をパラメータとして直接受け取ります

これが

キーであることは当然のことだと考えていますが、実際には、、CryptoJS が実際の キーを計算します。 IV(新しい用語をすべて説明することはできません, 役に立ちません私に聞いてください私もわかりません -_-")

5. 暗号化モード

5 つのモード: CBC 、CFB、ECB、OFB、PCBC

モードとパディングなしで AES アルゴリズムを取得する場合、デフォルトで ECB/PKCS5Padding が使用されます。

モード 詳細セキュリティ 、別のモードの方が安全である可能性があります。 。 。

5.1. Ecb

ECB: 暗号文を同じ長さのブロックに分割し (欠落補完)、個別に暗号化して出力します。一つ一つ暗号文を作っていきます。

利点:

1.単純;

2.並列コンピューティングに役立ちます。

3.

エラーは送信されません。

欠点

:

1.

はプレーン テキスト モードを非表示にできません。

2.

平文に対する可能性のあるアクティブな攻撃

5.2.

3.2 CBC

モード:

利点:

1.積極的に攻撃するのは容易ではないセキュリティECB よりも優れている、 は長いパケットの送信に適しています SSLIPSec 標準。

欠点:

1.並列には役に立たない計算;

2.エラーの伝播;

3.初期化ベクトルが必要ですIV

5.3. OFBモード:


利点:

1.隠し平文モード;

2.ブロック暗号をストリーム モードに変換 ;

3.パケットより小さいデータを時間内に暗号化して送信できます;

欠点:

1.並列計算;

2.平文に対する積極的な攻撃が可能です;

3.エラー送信: 1 つの平文ユニットが破損し、複数のユニットに影響を及ぼします ;

5.4. 3.3 CFBモード:


利点:

1.隠しプレーンテキストモード ;

2.ストリーム モードに変換されたブロック暗号;

3.パケットより小さいデータを時間内に暗号化して送信できます;

欠点:

1.並列コンピューティングには適さない;

2.エラー送信: 1 つの平文ユニットへの損傷は複数のユニットに影響します;

3.唯一のIV;


🎜>

パディングメソッド

AES

は通常 16

バイトを 1 つのブロックとして暗号化し、ブロック全体を暗号化します。入力文字列が 16 バイトでは足りない場合は、ビット

PKCS5Padding: パディングの原則は、長さが 16 バイト未満の場合、 までパディングする必要があるということです。 16 バイト、補数 (16-len)(16-len) 例:

123このセクション文字列は 3 バイト、16- 3 = 13, を埋めた後の値は次のとおりです: 123+13 10 進数 13,

文字列の長さがちょうど 16 バイトの場合、16 バイトの 10 進数 16

CryptoJS は、DES 暗号化デフォルト モード、および を実行します。 メソッドは、Java のデフォルトとは異なります。ECB モードを使用する必要があります。 PKCS5Padding、 ですが、CryptoJS には Pkcs7、気にしないでください 試してみてください ...

NoPadding、PKCS5Padding、ISO10126Padding の 3 種類のパディングをサポートします。 SSL3Padding はサポートされていません。 「NONE」モードはサポートされていません。

6.0.1. パディングメソッドアーキテクチャ図

7. アルゴリズム/モード/ 比較表

8. 暗号化セクション長AES/CBC/NoPadding 16 サポートされていません AES/CBC/PKCS5パディング 32 16

AES/CBC/ISO10126パディング 32 16

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート