IDEA加密算法(含所需jar包(commons-codec-1.11.jar ,bcprov-jdk15on-160.jar))


軟件設計上機實驗IDEA算法:

  1 import javax.crypto.Cipher;
  2 import javax.crypto.KeyGenerator;
  3 import javax.crypto.SecretKey;
  4 import org.apache.commons.codec.binary.Base64;
  5 import org.bouncycastle.jce.provider.BouncyCastleProvider;
  6 
  7 
  8 
  9 import javax.crypto.Cipher;
 10 import javax.crypto.KeyGenerator;
 11 import javax.crypto.SecretKey;
 12 import javax.crypto.spec.SecretKeySpec;
 13 import java.security.Key;
 14 import java.security.Security;
 15 
 16 
 17 public class IDEA implements algorithm{
 18     public void speak(String value) {
 19         String data = "20173599 周博";
 20         data=value;
 21         String key = getKey();
 22         System.out.println("要加密的原文:"+data);
 23         System.out.println("密鑰:" + key);
 24         String data_en = ideaEncrypt(data, key);
 25         System.out.println("密文:"+data_en);
 26         String data_de = ideaDecrypt(data_en, key);
 27         System.out.println("原文:"+data_de);
 28     }
 29     
 30      public static final String KEY_ALGORITHM="IDEA";
 31 
 32         public static final String CIPHER_ALGORITHM="IDEA/ECB/ISO10126Padding";
 33         public static byte[] initkey() throws Exception{
 34             //加入bouncyCastle支持
 35             Security.addProvider(new BouncyCastleProvider());
 36 
 37             //實例化密鑰生成器
 38             KeyGenerator kg=KeyGenerator.getInstance(KEY_ALGORITHM);
 39             //初始化密鑰生成器,IDEA要求密鑰長度為128位
 40             kg.init(128);
 41             //生成密鑰
 42             SecretKey secretKey=kg.generateKey();
 43             //獲取二進制密鑰編碼形式
 44             return secretKey.getEncoded();
 45         }
 46         /**
 47          * 轉換密鑰
 48          * @param key 二進制密鑰
 49          * @return Key 密鑰
 50          * */
 51         private static Key toKey(byte[] key) throws Exception{
 52             //實例化DES密鑰
 53             //生成密鑰
 54             SecretKey secretKey=new SecretKeySpec(key,KEY_ALGORITHM);
 55             return secretKey;
 56         }
 57 
 58         /**
 59          * 加密數據
 60          * @param data 待加密數據
 61          * @param key 密鑰
 62          * @return byte[] 加密后的數據
 63          * */
 64         private static byte[] encrypt(byte[] data,byte[] key) throws Exception{
 65             //加入bouncyCastle支持
 66             Security.addProvider(new BouncyCastleProvider());
 67             //還原密鑰
 68             Key k=toKey(key);
 69             //實例化
 70             Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM);
 71             //初始化,設置為加密模式
 72             cipher.init(Cipher.ENCRYPT_MODE, k);
 73             //執行操作
 74             return cipher.doFinal(data);
 75         }
 76         /**
 77          * 解密數據
 78          * @param data 待解密數據
 79          * @param key 密鑰
 80          * @return byte[] 解密后的數據
 81          * */
 82         private static byte[] decrypt(byte[] data,byte[] key) throws Exception{
 83             //加入bouncyCastle支持
 84             Security.addProvider(new BouncyCastleProvider());
 85             //還原密鑰
 86             Key k =toKey(key);
 87             Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM);
 88             //初始化,設置為解密模式
 89             cipher.init(Cipher.DECRYPT_MODE, k);
 90             //執行操作
 91             return cipher.doFinal(data);
 92         }
 93         public static String getKey(){
 94             String result = null;
 95             try {
 96                 result = Base64.encodeBase64String(initkey());
 97             } catch (Exception e) {
 98                 e.printStackTrace();
 99             }
100             return result;
101         }
102         public static String ideaEncrypt(String data, String key) {
103             String result = null;
104             try {
105                 byte[] data_en = encrypt(data.getBytes(), Base64.decodeBase64(key));
106                 result = Base64.encodeBase64String(data_en);
107             } catch (Exception e) {
108                 e.printStackTrace();
109             }
110             return result;
111         }
112 
113         public static String ideaDecrypt(String data, String key) {
114             String result = null;
115             try {
116                 byte[] data_de =decrypt(Base64.decodeBase64(data), Base64.decodeBase64(key));;
117                 result = new String(data_de);
118             } catch (Exception e) {
119                 e.printStackTrace();
120             }
121             return result;
122         }
123      
124 
125     
126 
127     public static void main(String[] args) {
128         // TODO Auto-generated method stub
129         System.out.println("IDEA加密算法");
130         IDEA idea=new IDEA();
131          try
132          {    
133              idea.speak("20173599 周博");
134          }
135          catch(Exception e)
136          {
137              System.out.println(e.getMessage());
138          }
139     }
140 
141 }
IDEA算法

jar包下載地址:

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

提取密碼:ynnz


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM