Java Base6四、AES、SHA一、MD5加密算法

參考地址http://www.open-open.com/lib/view/open1392185662160.html
 
package com.example.decript;
 
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
 
public class DecriptTest {
 
     public static String SHA1(String decript) {
         try {
             MessageDigest digest = java.security.MessageDigest
                     .getInstance( "SHA-1" );
             digest.update(decript.getBytes());
             byte messageDigest[] = digest.digest();
             // Create Hex String
             StringBuffer hexString = new StringBuffer();
             // 字節數組轉換爲 十六進制 數
             for ( int i = 0 ; i < messageDigest.length; i++) {
                 String shaHex = Integer.toHexString(messageDigest[i] & 0xFF );
                 if (shaHex.length() < 2 ) {
                     hexString.append( 0 );
                 }
                 hexString.append(shaHex);
             }
             return hexString.toString();
 
         } catch (NoSuchAlgorithmException e) {
             e.printStackTrace();
         }
         return "" ;
     }
 
     public static String SHA(String decript) {
         try {
             MessageDigest digest = java.security.MessageDigest
                     .getInstance( "SHA" );
             digest.update(decript.getBytes());
             byte messageDigest[] = digest.digest();
             // Create Hex String
             StringBuffer hexString = new StringBuffer();
             // 字節數組轉換爲 十六進制 數
             for ( int i = 0 ; i < messageDigest.length; i++) {
                 String shaHex = Integer.toHexString(messageDigest[i] & 0xFF );
                 if (shaHex.length() < 2 ) {
                     hexString.append( 0 );
                 }
                 hexString.append(shaHex);
             }
             return hexString.toString();
 
         } catch (NoSuchAlgorithmException e) {
             e.printStackTrace();
         }
         return "" ;
     }
 
     public static String MD5(String input) {
         try {
             // 得到MD5摘要算法的 MessageDigest 對象
             MessageDigest mdInst = MessageDigest.getInstance( "MD5" );
             // 使用指定的字節更新摘要
             mdInst.update(input.getBytes());
             // 得到密文
             byte [] md = mdInst.digest();
             // 把密文轉換成十六進制的字符串形式
             StringBuffer hexString = new StringBuffer();
             // 字節數組轉換爲 十六進制 數
             for ( int i = 0 ; i < md.length; i++) {
                 String shaHex = Integer.toHexString(md[i] & 0xFF );
                 if (shaHex.length() < 2 ) {
                     hexString.append( 0 );
                 }
                 hexString.append(shaHex);
             }
             return hexString.toString();
         } catch (NoSuchAlgorithmException e) {
             e.printStackTrace();
         }
         return "" ;
     }
 
     /**
      * 加密
      *
      * @param content
      *            須要加密的內容
      * @param password
      *            加密密碼
      * @return
      */
     public static byte [] encryptAES(String content, String password) {
         try {
             KeyGenerator kgen = KeyGenerator.getInstance( "AES" );
             kgen.init( 128 , new SecureRandom(password.getBytes()));
             SecretKey secretKey = kgen.generateKey();
             byte [] enCodeFormat = secretKey.getEncoded();
             SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES" );
             Cipher cipher = Cipher.getInstance( "AES" ); // 建立密碼器
             byte [] byteContent = content.getBytes( "utf-8" );
             cipher.init(Cipher.ENCRYPT_MODE, key); // 初始化
             byte [] result = cipher.doFinal(byteContent);
             return result; // 加密
         } catch (NoSuchAlgorithmException e) {
             e.printStackTrace();
         } catch (NoSuchPaddingException e) {
             e.printStackTrace();
         } catch (InvalidKeyException e) {
             e.printStackTrace();
         } catch (UnsupportedEncodingException e) {
             e.printStackTrace();
         } catch (IllegalBlockSizeException e) {
             e.printStackTrace();
         } catch (BadPaddingException e) {
             e.printStackTrace();
         }
         return null ;
     }
 
     /**
      * 解密
      *
      * @param content
      *            待解密內容
      * @param password
      *            解密密鑰
      * @return
      */
     public static byte [] decryptAES( byte [] content, String password) {
         try {
             KeyGenerator kgen = KeyGenerator.getInstance( "AES" );
             kgen.init( 128 , new SecureRandom(password.getBytes()));
             SecretKey secretKey = kgen.generateKey();
             byte [] enCodeFormat = secretKey.getEncoded();
             SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES" );
             Cipher cipher = Cipher.getInstance( "AES" ); // 建立密碼器
             cipher.init(Cipher.DECRYPT_MODE, key); // 初始化
             byte [] result = cipher.doFinal(content);
             return result; // 加密
         } catch (NoSuchAlgorithmException e) {
             e.printStackTrace();
         } catch (NoSuchPaddingException e) {
             e.printStackTrace();
         } catch (InvalidKeyException e) {
             e.printStackTrace();
         } catch (IllegalBlockSizeException e) {
             e.printStackTrace();
         } catch (BadPaddingException e) {
             e.printStackTrace();
         }
         return null ;
     }
 
     /**
      * BASE64解密
      *
      * @param key
      * @return
      * @throws Exception
      */
     public static String decryptBASE64(String key) {
 
         return "" ;
     }
 
     /**
      * BASE64加密
      *
      * @param key
      * @return
      * @throws Exception
      */
     public static String encryptBASE64(String key) {
 
         return "" ;
     }
}
相關文章
相關標籤/搜索