JAVAにおける3 DES暗号化の例


この質問では、JAVAでどのようにいくつかの暗号化コードを使用するかの例を簡単に説明しますが、暗号化アルゴリズムと数学に関する知識は本明細書では議論されていません.

package com.util;

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

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

import org.apache.commons.codec.binary.Base64;
/**
 * 3DES      
 * @author Administrator
 *
 */
public class DES3 {

	private static final String KEY_ALGORITHM = "DESede";
	private static final String DEFAULT_CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";//        

	/**
	 * DESede     
	 *
	 * @param content
	 *                 
	 * @param key
	 *                
	 * @return   Base64        
	 */
	public static String encrypt(String content, String key) {
		try {
			Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);
			//      
			byte[] byteContent = content.getBytes("utf-8");
			cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(key));
			//             
			byte[] result = cipher.doFinal(byteContent);//   
			return Base64.encodeBase64String(result);//   Base64    
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return null;
	}

	/**
	 * } } DESede     
	 *
	 * @param content
	 * @param key
	 * @return
	 */
	public static String decrypt(String content, String key) {
		try {
			//    
			Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); //        ,       
			cipher.init(Cipher.DECRYPT_MODE, getSecretKey(key)); //     
			byte[] result = cipher.doFinal(Base64.decodeBase64(content));
			return new String(result, "utf-8");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return null;
	}

	/**
     }
     *       
     *
     * @return
     */ private static SecretKeySpec getSecretKey(final String key) { 
    	 //              KeyGenerator   
    	 KeyGenerator kg = null; try { kg = KeyGenerator.getInstance(KEY_ALGORITHM); 
        kg.init(new SecureRandom(key.getBytes())); 
    	 //       
    	 SecretKey secretKey = kg.generateKey(); 
    	 return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM);
    	 //    DESede     
    	 } catch (NoSuchAlgorithmException ex) { 
    		 ex.printStackTrace();
    		 } return null; 
    		 }

	public static void main(String[] args) {
		String content = "  3DES";
		String key = "key";
		System.out.println("content:" + content);
		String s1 = DES3.encrypt(content, key);
		System.out.println("  :" + s1);
		System.out.println("  :" + DES3.decrypt(s1, key));
	}



}