总是想整理些东西出来,但是平时工作太忙,好不容易今晚抽出点时间把之前写的
一些小方法总结下,作为一个引子,希望以后有时间和精力写出真正的干货出来。
见笑了。
package com.rrtx.card.xpay.action;
import java.io.UnsupportedEncodingException;
import cn.jpush.api.utils.Base64;
import com.rrtx.card.encrypt.ProcessMessage;
import com.rrtx.card.util.CommonUntil;
import com.rrtx.card.xpay.util.DesUtils;
public class myWayTest {
/**
* 解密
* @param encStr
* @throws Exception
*/
public static void des (String encStr) throws Exception{
DesUtils des = DesUtils.getInstance();
String key = "ad?<>[]=+-12.,';";
byte[] k = key.getBytes();
char[] encByte = encStr.toCharArray();
byte[] dec = des.decrypt(Base64.decode(encByte), k, null);
String decStr = new String(dec);
System.out.println("解密后的数据"+decStr);
}
/**
* 加密
* @param password
* @return
* @throws Exception
*/
public static String jiami(String password) throws Exception {
DesUtils des = DesUtils.getInstance();
// 此处为密匙
String key = "ad?<>[]=+-12.,';";
// String key = "wangpeng";
// 将密码和密匙转换为byte数组
byte[] pwd = password.getBytes();
byte[] k = key.getBytes();
// 加密
byte[] enc = des.encrypt(pwd, k, null);
System.out.println("加密后的byte数据: "+enc);
String encStr = new String(Base64.encode(enc));
System.out.println("加密后的字符串数据: "+ encStr);
return encStr;
}
/**
* 加密加解密
* @throws Exception
*/
public static void ss () throws Exception {
DesUtils des = DesUtils.getInstance();
String password = "123456";
// 此处为密匙
String key = "ad?<>[]=+-12.,';";
// String key = "wangpeng";
// 将密码和密匙转换为byte数组
byte[] pwd = password.getBytes();
byte[] k = key.getBytes();
// 加密
byte[] enc = des.encrypt(pwd, k, null);
System.out.println("加密后的byte数据: "+enc);
String encStr = new String(Base64.encode(enc));
System.out.println("加密后的字符串数据: "+ encStr);
/***************解密**********************/
//encStr = tes.decode(encStr);
char[] encByte = encStr.toCharArray();
byte[] dec = des.decrypt(Base64.decode(encByte), k, null);
String decStr = new String(dec);
System.out.println("解密后的数据"+decStr);
}
/**
* 对汉字或字符串进行编码再解码
* @param name
*/
public static void encodeAndDecode (String name) {
if (CommonUntil.isEmpty(name)) {
name = "测试王";
}
try {
// 编码
String encodeName = java.net.URLEncoder.encode(name, "UTF-8");
System.out.println(encodeName);
// 解码
String decodeName = java.net.URLDecoder.decode(encodeName, "UTF-8");
System.out.println(decodeName);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static void signAndCheckSign (String transdata ) {
byte[] signData1 = new byte[2048];
if (CommonUntil.isEmpty(transdata)) {
transdata = "123456";
}
signData1 = ProcessMessage.signMessage(transdata, "D:/ruirong/apache-tomcat-6.0.37/webapps/xpay/cert/private.pfx",
"rrtx1234");
String signData = new String(signData1);
System.out.println("签名后的字符串 signData :" + signData);
System.out.println("签名成功");
String k = "MIIDmjCCAoKgAwIBAgIJALbVA79lN8LfMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV"+
"BAYTAkNOMQ8wDQYDVQQIDAZzaGFueGkxDzANBgNVBAcMBnNoYW54aTEPMA0GA1UE"+
"CgwGd3V6aG91MQ8wDQYDVQQLDAZ3dXpob3UxDzANBgNVBAMMBnd1emhvdTAeFw0x"+
"NzA5MDYwODA2MjVaFw0xODA5MDYwODA2MjVaMGIxCzAJBgNVBAYTAkNOMQ8wDQYD"+
"VQQIDAZzaGFueGkxDzANBgNVBAcMBnNoYW54aTEPMA0GA1UECgwGd3V6aG91MQ8w"+
"DQYDVQQLDAZ3dXpob3UxDzANBgNVBAMMBnd1emhvdTCCASIwDQYJKoZIhvcNAQEB"+
"BQADggEPADCCAQoCggEBAMYkp8/nxLjXhSIzss/ba1hpxN4spdRWrEYxqniIr379"+
"0zZd0YjlPiXgag4FzhZSNOxTeq35msNyeeLUsKt6Ym01MTqaDnsUKNGF0qnIPIHy"+
"AyWoMXwBy6Cwr/+NlClkkZocV3aKrFvj0EXC9HmFfExfgdWTebyQJfCMBghGGplq"+
"Dz6P5rA1cSXUR1H9ZQuePzF+SSMErOpXsIk/De7qG6stzZgQslA9RYIkwjGpy6vU"+
"OvZNXqGM1cTyQwA7jK8gVY1G6uP3YcZfeQylFabiijCmerj/e6qQeeK9sP5c5Ug7"+
"KHePf8LA8yial+ycTY60TIpVdjs9xki3X0b9VpYEJXUCAwEAAaNTMFEwHQYDVR0O"+
"BBYEFNzkD9rY3iO8IfTw/9GFs6o/Q5eZMB8GA1UdIwQYMBaAFNzkD9rY3iO8IfTw"+
"/9GFs6o/Q5eZMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAMP3"+
"0YARHg2rulB8uKLHsLrF4CCBxBpZklSgB3Ea13ARcoJhTgdF0+/ieK3pU1sG9PhV"+
"Z5jWB8y8XZnbI5PPPlGZx3THBim/i7J0RsSPaYYz3+QUFR0V9k5UhDlV3vji4PzZ"+
"CD0vRDTAppxJmNdxbn6EpLg2fZ7ZfiKoRhLyNnu5bQKt/TWaKnxVUZ48jvs9mbOH"+
"pT1WNtIuONpaGEnsCuGtJiEX3K3qIBMQrULKc+Ooj71WtpmigcoT1NPeP1EHDukY"+
"IhLMTo4kYLtZMbG9CE0XMgtH2+26rTGo6E7vt3DUAB48sZ8bvQ45ICeOuMt1HT1v"+
"iw0JZappRwd+41LwyIY=";
Boolean flag = ProcessMessage.verifyMessage(transdata, signData, k.getBytes());
if(flag){
// 说明验签成功,将数据返回到PrepaidCardAction
// return null;
System.out.println("验签成功");
} else{
// 验签失败
System.out.println("验签失败");
}
}
public static void main (String[] args) throws Exception {
signAndCheckSign("456789");
// 加密
String encStr = jiami("123456");
// 解密
des(encStr);
// 加密+解密
// ss();
// 解密
// des("M6HWbg4kLZw=");
// 编码加解码
encodeAndDecode("王朋朋");
}
}