Java Base64、AES、SHA1、MD5加密算法

jopen 10年前發布 | 33K 次閱讀 算法 BASE64

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 "";  
}  

} </pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!