IDEA暗号化アルゴリズム(所望のパッケージを含むJAR(コモン・コーデック1.11.jar、bcprov-jdk15on-160.jar))

ソフトウェアの設計・マシン実験IDEAアルゴリズム:

  1つの 輸入javax.crypto.Cipher。
  2  インポートjavax.crypto.KeyGenerator。
  3  輸入javax.crypto.SecretKey。
  4  インポートorg.apache.commons.codec.binary.Base64。
  5  輸入org.bouncycastle.jce.provider.BouncyCastleProvider。
  6  
  7  
  8  
  9  インポートjavax.crypto.Cipher。
10  インポートjavax.crypto.KeyGenerator。
11  インポートjavax.crypto.SecretKey。
12  インポートするjavax.crypto.spec.SecretKeySpec。
13  インポートjava.security.Key。
14 輸入java.security.Security。
15  
16  
17  パブリック クラス IDEAは実装アルゴリズム{
 18      公共 ボイド話す(文字列値){
 19件の          Stringデータ= "20173599周博"を20件の          データ= 値。
21          文字列キー= のgetKey()。
22          のSystem.out.println( "要加密的原文:" + データ)。
23          のSystem.out.println( "密钥:" + キー)。
24          列DATA_EN = ideaEncrypt(データ、キー)
25          のSystem.out.println( "密文:" +DATA_EN);
26          列data_de = ideaDecrypt(DATA_EN、キー)
27          のSystem.out.println( "原文:" + data_de)。
28      }
 29      
30       パブリック 静的 最終列KEY_ALGORITHM = "IDEA" 31  
32          パブリック 静的 最終列CIPHER_ALGORITHM = "IDEA / ECB / ISO10126Padding" 33          パブリック 静的 バイト [])(initkey スロー例外{
 34              // 加入はBouncyCastle支持
35              Security.addProvider(新規のBouncyCastleProvider());
 36  
37 [              // キージェネレータインスタンス
38である              するKeyGeneratorのキログラム= KeyGenerator.getInstance(KEY_ALGORITHM);
 39              // 初期化鍵生成、IDEA鍵長は、請求項に128ビットである
40              kg.init(128 ) ;
 41              // キー生成
42で              秘密鍵のSecretKey = kg.generateKey();
 43である             // キー利用可能バイナリ符号化形式
44が             戻りsecretKey.getEncodedを();
 45          }
 46である         / ** 
47           *変換キー
 48           *の@paramのキーバイナリキー
 49          * @Return キーキー
 50           * * / 
51である         プライベート 静的鍵toKeyが(バイト []キー)をスロー例外{
 52は             // キーDESをインスタンス
 53              @ 世代キー
54である              のSecretKey秘密鍵= 新しい新しいSecretKeySpec(キー、KEY_ALGORITHM)。
 55              リターン秘密鍵、
 56である         }
 57は、 
58          / ** 
59の          *暗号化されたデータ
 60の          * @paramのデータ暗号化すべきデータ
 61である          * @paramキーキー
 62である          * @return データ[]暗号化されたバイト
 63がある          * * / 
64          プライベート 静的な バイトが []暗号化(バイト []データ、バイト []キー)をスロー例外{
 65              //ははBouncyCastleのサポートの追加
66              (Security.addProviderを新しい新しいBouncyCastleProvider());
 67              // 鍵リストア
68              鍵K = )(キーtoKeyがする;
 69              // インスタンス化
70              暗号暗号= Cipher.getInstance(CIPHER_ALGORITHM);
 71れます             // 暗号化モードを初期化
72              ; cipher.init(Cipher.ENCRYPT_MODE、K)が
 73である             // 操作を行う
74              リターン; Cipher.doFinal(データ)
 75          }
 76          / ** 
77           *復号化データ
 78           * @param するデータを復号化されたデータは、
 79           *の@param キーキー
 80           * @return データ・バイト[]復号化された
 81           * * / 
82          プライベート 静的 バイト []解読(バイト []データ、バイト []キー)スロー{例外
 83              // はBouncyCastle支持追加
84              Security.addProvider(新しい新しいBouncyCastleProviderを());
 85              // 鍵リストア
86              鍵K = (KEY)toKeyがを、
 87              暗号暗号= Cipher.getInstance(CIPHER_ALGORITHM);
 88              // 初期化し、復号化モードは次のように設定されている
89              cipher.init(Cipher.DECRYPT_MODE、K);
 90              // 操作実行
91は、             戻りCipher.doFinal(データ);
 92          }
 93          パブリック 静的文字列のgetKey(){
 94             文字列の結果= nullを95              試み{
 96                  結果= Base64.encodeBase64String(initkey())。
97              } キャッチ(例外e){
 98                  e.printStackTrace();
99              }
 100              リターン結果。
101          }
 102          パブリック 静的文字列ideaEncrypt(Stringデータ、文字列キー){
 103              文字列結果= NULL ;
104              のtry {
 105                  バイト [] DATA_EN =暗号化(data.getBytes()、Base64.decodeBase64(キー));
106                  結果= Base64.encodeBase64String(DATA_EN)。
107              } キャッチ(例外e){
 108                  e.printStackTrace();
109              }
 110              リターン結果。
111          }
 112  
113          パブリック 静的文字列ideaDecrypt(Stringデータ、文字列キー){
 114              文字列結果= NULL ;
115              のtry {
 116                  バイト [] data_de =(Base64.decodeBase64(データ)、Base64.decodeBase64(キー))を解読;;
117                  結果= 新しい文字列(data_de)。
118              } キャッチ(例外e){
 119                  e.printStackTrace();
120              }
 121              リターン結果。
122          }
 123       
124  
125      
126  
127      公共 静的 ボイドメイン(文字列[]引数){
 128          // TODO自動生成方法のスタブ
129          のSystem.out.println( "IDEA加密算法" )。
130          IDEAアイデア=新しいIDEA();
131           試みる
132           {    
 133               idea.speak( "20173599周博を" )。
134           }
 135           キャッチ(例外e)
 136           {
 137               のSystem.out.println(e.getMessage())。
138           }
 139      }
 140  
141 }
IDEAアルゴリズム

JARパッケージをダウンロード:

https://pan.baidu.com/s/16YvZIXsGBRtFjQqrTAGvdQ

パスワードを抽出します。ynnz

おすすめ

転載: www.cnblogs.com/smartisn/p/11600823.html