ソフトウェアの設計・マシン実験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 }
JARパッケージをダウンロード:
https://pan.baidu.com/s/16YvZIXsGBRtFjQqrTAGvdQ
パスワードを抽出します。ynnz