Java実装AES復号化プログラム

3908 ワード

仕事の中でよくパスワードの暗号化に出会うことができて、URLは参照して暗号化を行って、ここで私は1つの例を参照して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);
	}
}

図1に示すように、コードcopyを独自の開発環境に移行すると、以下のエラーが発生します.
Java实现的AES加解密程序_第1张图片図1
sun.misc.BASE 64 Encoder jarパッケージの解決方法が見つからない
次の方法で解決できます.
MyeclipseまたはEclipseでWindow-->Preferences-->Java-->Compiler-->Error/Warningsを選択します.次に、図2のように設定します.
Java实现的AES加解密程序_第2张图片
図2
次にjavaアプリケーションで実行テストを行い、最終的な結果は以下の通りです.
      : cat123@#steven
       : YtJ1UpR0ZFA2SsKPv1i24g==
        : cat123@#steven

このとき、あなたのプロジェクトで復号化を使用してデータの安全を保証することができます.
ここで皆さんの勉強が楽しいことを祈っています.