package com.common.uitls;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.alibaba.druid.support.json.JSONUtils;
import com.alipay.api.internal.util.AlipaySignature;
public class SHA1WithRSA {
//所需用到架包alipay-sdk-java20170725114550.jar
// 这里的公钥和客户端的私钥是一对
//public final static String str_pubK = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfBUB3SSq";
// 这里的私钥和客户端的公钥是一对
//public final static String str_priK = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoG";
/**
* 私钥签名 (经过base64编码)
*/
public static String sign(String timestamp,String param) {
try {
if (StringUtils.isBlank(param)){
return URLEncoder.encode(AlipaySignature.rsaSign(timestamp, str_priK, "utf-8"),"utf-8");
}else{
return URLEncoder.encode(AlipaySignature.rsaSign(param+timestamp, str_priK,"utf-8"),"utf-8");
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 公钥校验(经过base64解码)
*/
public static boolean verify(String timestamp,String param, String sign) {
try {
if (StringUtils.isBlank(param)){
return AlipaySignature.rsaCheckContent(timestamp, URLDecoder.decode(sign,"utf-8"), str_pubK, "utf-8");
}else{
return AlipaySignature.rsaCheckContent(param+timestamp, URLDecoder.decode(sign,"utf-8"), str_pubK, "utf-8");
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] args) throws Exception {
Map<String,Object> m=new HashMap<String,Object>();
m.put("cardNumber", "12345678901");
m.put("payAmount", 100);
m.put("payMethod", 1);
m.put("rechargeTime", 2);
System.out.println(JSONUtils.toJSONString(m));
String timestamp =DateUtils.timestamp();
String sign = sign(timestamp,JSONUtils.toJSONString(m));
System.out.println("timestamp:"+timestamp);
System.out.println("签名:"+sign);
boolean f =verify(timestamp, JSONUtils.toJSONString(m), sign);
if(f){
System.out.println("签名通过");
}else{
System.out.println("签名失败");
}
}
}
package com.common.uitls;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.alibaba.druid.support.json.JSONUtils;
import com.alipay.api.internal.util.AlipaySignature;
public class SHA1WithRSA {
//所需用到架包alipay-sdk-java20170725114550.jar
// 这里的公钥和客户端的私钥是一对
//public final static String str_pubK = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfBUB3SSq";
// 这里的私钥和客户端的公钥是一对
//public final static String str_priK = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoG";
/**
* 私钥签名 (经过base64编码)
*/
public static String sign(String timestamp,String param) {
try {
if (StringUtils.isBlank(param)){
return URLEncoder.encode(AlipaySignature.rsaSign(timestamp, str_priK, "utf-8"),"utf-8");
}else{
return URLEncoder.encode(AlipaySignature.rsaSign(param+timestamp, str_priK,"utf-8"),"utf-8");
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 公钥校验(经过base64解码)
*/
public static boolean verify(String timestamp,String param, String sign) {
try {
if (StringUtils.isBlank(param)){
return AlipaySignature.rsaCheckContent(timestamp, URLDecoder.decode(sign,"utf-8"), str_pubK, "utf-8");
}else{
return AlipaySignature.rsaCheckContent(param+timestamp, URLDecoder.decode(sign,"utf-8"), str_pubK, "utf-8");
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] args) throws Exception {
Map<String,Object> m=new HashMap<String,Object>();
m.put("cardNumber", "12345678901");
m.put("payAmount", 100);
m.put("payMethod", 1);
m.put("rechargeTime", 2);
System.out.println(JSONUtils.toJSONString(m));
String timestamp =DateUtils.timestamp();
String sign = sign(timestamp,JSONUtils.toJSONString(m));
System.out.println("timestamp:"+timestamp);
System.out.println("签名:"+sign);
boolean f =verify(timestamp, JSONUtils.toJSONString(m), sign);
if(f){
System.out.println("签名通过");
}else{
System.out.println("签名失败");
}
}
}