Java實現的AES加解密程序

    在工作中會經常遇到密碼加密,URL傳參要進行加密,在此我參照一個例子將用java實現的AES加解密程序用實例寫出。具體的參照可以參照如下的鏈接http://www.code2learn.com/2011/06/encryption-and-decryption-of-data-using.html

       首先給出具體的加解密代碼,

     AESencrp.java

package com.security;

import java.security.Key;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 用來進行AES的加密和解密程序
 * 
 * @author Steven
 * 
 */
public class AESencrp {

	// 加密算法
	private String ALGO;

	// 加密密鑰
	// private static final byte[] keyValue = new byte[] { 'T', 'h', 'e',
	// 'B','e', 's', 't', 'S', 'e', 'c', 'r', 'e', 't', 'K', 'e', 'y' };
	// 16位的加密密鑰
	private byte[] keyValue;

	/**
	 * 用來進行加密的操作
	 * 
	 * @param Data
	 * @return
	 * @throws Exception
	 */
	public String encrypt(String Data) throws Exception {
		Key key = generateKey();
		Cipher c = Cipher.getInstance(ALGO);
		c.init(Cipher.ENCRYPT_MODE, key);
		byte[] encVal = c.doFinal(Data.getBytes());
		String encryptedValue = new BASE64Encoder().encode(encVal);
		return encryptedValue;
	}

	/**
	 * 用來進行解密的操作
	 * 
	 * @param encryptedData
	 * @return
	 * @throws Exception
	 */
	public String decrypt(String encryptedData) throws Exception {
		Key key = generateKey();
		Cipher c = Cipher.getInstance(ALGO);
		c.init(Cipher.DECRYPT_MODE, key);
		byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedData);
		byte[] decValue = c.doFinal(decordedValue);
		String decryptedValue = new String(decValue);
		return decryptedValue;
	}

	/**
	 * 根據密鑰和算法生成Key
	 * 
	 * @return
	 * @throws Exception
	 */
	private Key generateKey() throws Exception {
		Key key = new SecretKeySpec(keyValue, ALGO);
		return key;
	}

	public String getALGO() {
		return ALGO;
	}

	public void setALGO(String aLGO) {
		ALGO = aLGO;
	}

	public byte[] getKeyValue() {
		return keyValue;
	}

	public void setKeyValue(byte[] keyValue) {
		this.keyValue = keyValue;
	}
}
這個是主要的加解密代碼,而測試代碼如下所示:

Checker.java

package com.security;

/**
 * 
 * @author Steven
 * 
 */
public class Checker {
	public static void main(String[] args) throws Exception {
		// 創建加解密
		AESencrp aes = new AESencrp();
		// 設置加解密算法
		aes.setALGO("AES");
		// 設置加解密密鑰
		aes.setKeyValue("4E7FF1C1F04F4B36".getBytes());
		// 要進行加密的密碼
		String password = "cat123@#steven";
		// 進行加密後的字符串
		String passwordEnc = aes.encrypt(password);
		String passwordDec = aes.decrypt(passwordEnc);
		System.out.println("原來的密碼 : " + password);
		System.out.println("加密後的密碼 : " + passwordEnc);
		System.out.println("解密後的原密碼 : " + passwordDec);
	}
}

在將代碼copy到自己的開發環境中會出現以下錯誤情況,如圖1所示:


                                        圖1

sun.misc.BASE64Encoder找不到jar包的解決方法

此時可以通過以下方式解決:

到Myeclipse或者Eclipse中選擇Window-->Preferences-->Java-->Compiler-->Error/Warnings.然後做如圖2設置:


                                      圖2

然後進行以java application進行運行測試,最終的結果如下所示:

原來的密碼 : cat123@#steven
加密後的密碼 : YtJ1UpR0ZFA2SsKPv1i24g==
解密後的原密碼 : cat123@#steven

             這時候就可以在你的項目中使用加解密來保證數據的安全了。

    在此恭祝大家學習愉快!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章