email中添加URL时注意事项

import java.security.Key;

import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

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

public class DESUtil {
    
    private static final Logger logger  = Logger.getLogger(DESUtil.class);
    private static final String ENCODE = "GBK";
    public static final String DEFAULT_KEY = "1234567890123456789012345"; //长度为25位

    private String key;

    public DESUtil() {
    }
    public DESUtil(String key) {
        this.key = key;
    }

    /**
     * 加密
     * @param strMing    String明文输入
     * @return    String密文输出
     */
    private String encryptStr(String strMing) {
        byte[] bOut = null;
        try {
            Key deskey = null;
            byte[] keyBytes = key.getBytes();
            byte[] data = strMing.getBytes(ENCODE);

            DESedeKeySpec spec = new DESedeKeySpec(keyBytes);
            SecretKeyFactory keyfactory = SecretKeyFactory
                    .getInstance("DESede");
            deskey = keyfactory.generateSecret(spec);
            Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, deskey);
            bOut = cipher.doFinal(data);
        } catch (Exception e) {
            logger.debug("DES加密异常!" + e.getMessage());
        }
        return new BASE64Encoder().encode(bOut);
    }

    /**
     * 解密
     * 
     * @param strMi
     *            String密文输入
     * @return String明文输出
     */
    private String decryptStr(String strMi) {
        String strMing = null;
        try {
            Key deskey = null;
            byte[] keyBytes = key.getBytes();
            byte[] data = new BASE64Decoder().decodeBuffer(strMi);

            DESedeKeySpec spec = new DESedeKeySpec(keyBytes);
            SecretKeyFactory keyfactory = SecretKeyFactory
                    .getInstance("DESede");
            deskey = keyfactory.generateSecret(spec);
            Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, deskey);
            byte[] bOut = cipher.doFinal(data);
            strMing = new String(bOut, ENCODE);
        } catch (Exception e) {
            logger.debug("DES解密异常!" + e.getMessage());
        }
        return strMing;
    }
    
    /**
     * 描述:加密
     * @param param    明文
     * @return        密文
     */
    public static String getEncryptStr(String desKey, String param) {
        // 腾付通接口密钥
        if (StringUtils.isEmpty(desKey))
            desKey = DEFAULT_KEY;
        final DESUtil desUtil = new DESUtil(desKey);
        if (StringUtils.isNotEmpty(param)) {
            return desUtil.encryptStr(param.trim());
        }
        return desUtil.encryptStr(StringUtils.EMPTY);
    }
    
    /**
     * 描述:解密
     * @param param        密文
     * @return            明文
     * @throws Exception
     */
    public static String getDecryptStr(String desKey, String param) throws Exception {
        // 腾付通接口密钥
        if (StringUtils.isEmpty(desKey))
            desKey = DEFAULT_KEY;
        final DESUtil desUtil = new DESUtil(desKey);  
        if (StringUtils.isNotEmpty(param)) {
            String desStr = desUtil.decryptStr(param);
            if (StringUtils.isNotEmpty(desStr)) {
                return desStr.trim();
            }
            return desStr;
        }
        return StringUtils.EMPTY;
    }
}


同意的URL地址:

getURLEncode(DESUtil.getEncryptStr(DESUtil.DEFAULT_KEY, agree))

获取agree原字符串

    /**
     * 方法描述:  组装请求参数
     * 作    者: yiming.zhang
     * 日    期: 2013-12-12-下午02:48:20
     * @param orderNo
     * @param invalidTimeStr
     * @param authorAccount
     * @param authResult
     * @return 
     * 返回类型: String
     */
    private static String obtainURLParamsStr(String orderNo, String invalidTimeStr,String authorAccount,String authResult) {
        String urlPamamsStr = "";
        Map<String,String> map = new HashMap<String,String>();
        map.put(ORDER_NO, orderNo);
        map.put(INVALID_TIME, invalidTimeStr);
        map.put(AUTHOR_ACCOUNT, authorAccount);
        map.put(AUTH_RESULT, authResult);
        StringBuilder sb = new StringBuilder();
        for (String  key : map.keySet()) {
            sb.append(key).append("=").append(map.get(key)).append("&");
        }
        if(sb.length() > 0){
            urlPamamsStr = sb.substring(0, sb.length() - 1);
        }
        return urlPamamsStr;
    }

getURLEncode方法:

    /**
     * 方法描述:  URL地址编码一次
     * 作    者: yiming.zhang
     * 日    期: 2013-12-12-下午02:36:31
     * @param str
     * @return 
     * 返回类型: String
     */
    public static String getURLEncode(String str){
        String s = "";
        try {
            s =    URLEncoder.encode(str,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return s;
    }


你可能感兴趣的:(email中添加URL时注意事项)