Java対称暗号化は、DES/3DES/AESアルゴリズムを使用して実装されます。
これを言う2つの文があります:
1)アルゴリズムとデータ構造は、プログラミングの重要な部分です。
2)プログラミングはアルゴリズムとデータ構造であり、アルゴリズムとデータ構造はプログラミングの魂です。
これは、私が言ったことではなく、数え切れないほどのプログラマーによって要約されています。これには、3つの対称暗号化アルゴリズムが含まれています:DES、3DES、AESが含まれており、実用的な情報がいっぱいです。
1。対称パスワードアルゴリズム
対称暗号化アルゴリズムは、今日最も広く使用され、最も頻繁に使用される暗号化アルゴリズムです。ソフトウェア業界だけでなく、ハードウェア業界でも使用されています。あらゆる種類のインフラストラクチャが、セキュリティニーズを伴うときはいつでも、対称暗号化アルゴリズムを優先します。
対称的な暗号化アルゴリズムの暗号化キーと復号化キーは同じです。
(1)通信モデルを暗号化および復号化します
(2)機能:オープンアルゴリズム、小さな計算ボリューム、高速暗号化速度、高暗号化効率
(3)弱点:両方の当事者が同じキーを使用し、セキュリティは保証されていません
対称パスワードには2種類のタイプがあります。パスワードをストリーミングし、パスワードをパケットに入れますが、ブロックパスワードが一般的に使用されています。
(4)パスワード作業モードをブロックします
1)ECB:電子cipherbook(最も一般的に使用されている、各暗号化は独立した暗号文パケットを生成し、他の暗号文パケットには影響しません。つまり、暗号化後に同じプレーンテキストが生成されます)
2)CBC:ciphertextリンク(一般的に使用されます。プレーンテキスト暗号化の前に、以前の暗号文でXOR操作を実行する必要があります。つまり、同じプレーンテキスト暗号化の後に異なる暗号文が生成されます)
これら2つの一般的に使用される作業モードに加えて、次のことがあります。
3)CFB:パスワードフィードバック
4)OFB:出力フィードバック
5)CTR:カウンター
これらの5つの作業モードは、派生計算を実行する際に暗号化のアルゴリズムによって主に適用されます。
6.ブロックパスワードを入力する方法
1)nopadding:塗りつぶしなし
2)PKCS5PADDING:
3)ISO10126PADDING:
7.一般的に使用される対称パスワード:
1)DES(データ暗号化標準、データ暗号化標準)
2)3DES(トリプルデス、デーデ、トリプルデス暗号化アルゴリズム)
3)AES(高度な暗号化標準、高度なデータ暗号化標準、AESアルゴリズムは、DESに対する攻撃アルゴリズムに効果的に抵抗できます)
まず、これら3つのアルゴリズムの簡単な比較を見てみましょう。
| アルゴリズム | キー長 | デフォルトのキー長 | 作業モード | 充填方法 |
|---|---|---|---|---|
| des | 56 | 56 | ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB-ofB128 | nopadding、pkcs5padding、iso10126padding |
| 3des | 112、168 | 168 | ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB-ofB128 | nopadding、pkcs5padding、iso10126padding |
| AES | 128、192、256 | 128 | ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB-ofB128 | nopadding、pkcs5padding、iso10126padding |
対称暗号化を実装するために、DES/3DES/AESの3つのアルゴリズムを使用する方法を見てみましょう。
2。DESアルゴリズム
1.DES:データ暗号化標準、対称暗号化アルゴリズムのフィールドの典型的なアルゴリズム
2。機能:キーは短い(56ビット)、短いライフサイクル(ひび割れを避ける)
3。Javaの実装
1)キーを生成します
keygenerator keygen = keygenerator.getInstance( "des"); // key generator keygen.init(56); //キージェネレーターの初期化SecretKey = keeneratekey();
2)暗号化
SecretKey SecretKey = new SecretKeyspec(key、 "des"); // cipher cipher = cipher.getinstance( "des"); // cipherは暗号化を完了するか、ワーキングクラスのcipher.initを復号化します。
3)復号化
SecretKey SecretKey = new SecretKeyspec(key、 "des"); // cipher.getinstance( "des");データ
暗号化と復号化のために異なるモードを設定するだけであることがわかります。
3.3DESアルゴリズム
1.3DES:キーの長さを112または168ビットに増やし、反復回数を増やすことでセキュリティを改善します。
2。短所:処理速度の低下、長いキー計算時間、暗号化効率の低下
3。Javaの実装
1)キーを生成します
keygenerator keygen = keygenerator.getInstance( "desede"); //キージェネレーターkeygen.init(168);
2)3DES暗号化
SecretKey SecretKey = new SecretKeyspec(key、 "desede"); Sデータ
3)3DES復号化
SecretKey SecretKey = new SecretKeyspec(key、 "dede"); //キーシファーcipher = cipher.getinstance( "desede"); PTSデータ
4。AESアルゴリズム(推奨)
1.AES:高度なデータ暗号化標準、DESアルゴリズムに対するすべての既知の攻撃に効果的に抵抗することができます
2。機能:短いキー設立時間、良好な感度、低メモリ要件、および高いセキュリティ
3。Javaの実装
1)キーを生成します
keygenerator keygen = keygenerator.getInstance( "aes"); //キージェネレーターkeygen.init(128);
2)AES暗号化
SecretKey SecretKey = new SecretKeyspec(key、 "aes"); // cipher cipher = cipher.getinstance( "aes"); Sデータ
3)AES復号化
SecretKey SecretKey = new SecretKeyspec(key、 "aes"); // cipher.getinstance( "aes"); PTSデータ
便利なため、DES/3DES/AESアルゴリズムのツールクラスを作成しました。
アドレス:http://xiazai.vevb.com/201701/yuanma/android-utilslibrary-master(vevb.com).rar(DES/3DES/AESツールクラスを追加)。
この時点で、DES/3DES/AEの3つのアルゴリズムはすべて、対称暗号化を実装するために行われます。
読んでくれてありがとう、私はそれがあなたを助けてくれることを願っています。