java rsa 加密

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("签名失败");
		}

	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值