⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 desencdec.java

📁 这是一个轻便的j2ee的web应用框架,是一个在多个项目中运用的实际框架,采用struts,hebinate,xml等技术,有丰富的tag,role,navigation,session,dictio
💻 JAVA
字号:
/*
 * Created on 2004-5-11
 *
 */
package com.esimple.service.crypto.cipher;

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

import com.esimple.service.crypto.util.BASE64Util;

/**
 * @author steven
 *
 */
public class DESEncdec implements Encdec {
	private static final String PADDING = "/ECB/PKCS5Padding";
	private static String defaultProvider = "SunJCE";
	private static final String algorithm = "DES";

	private String getProvider() {
//		defaultProvider =
//			System.getProperty("EOSCipherProvider", defaultProvider);
		return defaultProvider;
	}
	
	public String encrypt(String plaintext, SecretKey key){
		try {
			String spec = algorithm + PADDING;
			Cipher cipher = Cipher.getInstance(spec, getProvider());
			cipher.init(1, key);
			byte b[] = plaintext.getBytes("UTF8");
			byte cipherByteArray[] = cipher.doFinal(b);
			String ciphertext = BASE64Util.encode(cipherByteArray);
			return ciphertext;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;		
	}
	public String encrypt(String plaintext) {
		try {
			SecretKey key = getKey(null);
			return encrypt(plaintext,key);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	public String encrypt(
		String plaintext,
		String keyString) {
		try {
			SecretKey key = getKey(keyString);
			return encrypt(plaintext,key);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	public String decrypt(
		String ciphertext,
		SecretKey key) {
		try {
			String spec = algorithm + PADDING;
			Cipher cipher = Cipher.getInstance(spec, getProvider());
			cipher.init(2, key);
			byte decodebyte[] = BASE64Util.decodeBuffer(ciphertext);
			byte plaintext[] = cipher.doFinal(decodebyte);
			return new String(plaintext, "UTF8");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	public String decrypt(String ciphertext) {
		try {
			SecretKey key = getKey( null);
			return decrypt(ciphertext,key);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}	
	
	public String decrypt(
		String ciphertext,
		String keyString) {
		try {
			SecretKey key = getKey( keyString);
			return decrypt(ciphertext,key);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public SecretKey getKey(String keyString)throws Exception {
		SecretKey key = null;
		byte signedData[];
		if ( keyString == null) signedData = DefaultDESKey.BYTES_KEY;
		else signedData = keyString.getBytes();
		
		try {
			SecretKeySpec secrectKeySpec =
					new SecretKeySpec(signedData, algorithm);
			key = secrectKeySpec;
			if (key == null)
				throw new Exception("load secret key error.");
		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}
		return key;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -