您的位置:首页 > 大数据 > 人工智能

email中添加URL时注意事项

2014-04-14 00:00 204 查看
摘要: 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: