微信支付 获取RSA加密公钥API JAVA版

近做微信支付  企业付款到银行卡,其中收款方银行卡号、收款方用户名需要获取RSA加密公钥API进行加密;本文以windows为例;

微信开发文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_7&index=4

openssl下载地址:http://slproweb.com/products/Win32OpenSSL.html

 

获取接口:

首先要通过接口获取PKCS#1格式的公钥,再转为PKCS#8格式;

获取PKCS#1格式的公钥代码如下:

    // 获取RSA加密公钥API地址
    private final static String PUBLIC_KEY_URL = "https://fraud.mch.weixin.qq.com/risk/getpublickey";

    // 证书位置
    private final static String CertPath = "D:/apiclient_cert.p12";
  
    /**
     * 获取公钥 PKCS#1
     *
     * @return
     */
    public static String getPublicKey() {
        SortedMap<String, String> sortedMap = new TreeMap<String, String>();
        sortedMap.put("mch_id", MCH_ID);
        sortedMap.put("nonce_str", RandomNumber.getNonceStr());
        sortedMap.put("sign_type", "MD5");
        sortedMap.put("sign", createSign(sortedMap));
        String requestXML = XMLUtil.getRequestXml(sortedMap);
        String resultXML = CertHttpUtil.postData(PUBLIC_KEY_URL, requestXML, MCH_ID, CertPath);
        return resultXML;
    }

  

生成noceStr:

    /**
     * 生成NonStr 雪花算法
     *
     * @return
     * @throws Exception
     */
    public static String getNonceStr() {
        Integer workId = Integer.valueOf(1);
        IdWorker idWork = new IdWorker(workId);
        String nonceStr = "";
        try {
            nonceStr =  workId + String.valueOf(idWork.nextId());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return nonceStr;
    } 

执行getPublicKey方法,得到反馈的XML,其中pub_key是PSCK#1公钥,将pub_key保存

新建个PKCS1.pem, 将上面的pub_key保存

dos命令进入到openssl的bin目录下:

执行PKCS#1转PKCS#8命令:

openssl rsa -RSAPublicKey_in -in D:\cert\weChatApp\PKCS1.pem -pubout

新建个PSCK8文件,将生成的KEY保存

这样就完成了  PKCS#1转PKCS#8  获取RSA加密公钥

原文地址:https://www.cnblogs.com/zengweiB208/p/9028841.html

时间: 2024-10-14 00:39:56

微信支付 获取RSA加密公钥API JAVA版的相关文章

RSA加密公钥系数获取结果多00

写在前面 本文是在解决加密和解密用的不是同一套密钥对时找到的一篇, 最后问题不在byte数组, 是自己工具类中生成密钥对的问题, 但是本文RSA加密中公钥指数和公钥系数的获取(byte[]部分)讲解比较细致, 虽然最后也没用这种方式. 以下是本人采用的方式. 位数确实不对, 但是不影响前台根据系数和指数生成公钥, 也不影响后台解密, 仅仅做一个记录. // // 获取公钥系数和公钥指数 // // 获取公钥对象--注意:前端那边需要用到公钥系数和指数 // RSAPublicKey public

PHP app 唤起微信支付 获取链接【项目实例】

public function weixin_params_data(){  $data  = $this->ApiData();   //获取接口访问的数据 //$_type = $post_data['type']; if(!$data['out_trade_no']){ systemmess('0','参数错误'); } $WxPayConfig = array( 'APPID'=>'wxc123456789', 'MCHID'=>'123456', 'KEY'=>'KEY'

(原创)VS2017 C# 运行 Javasrcipt RSA 加密用户名登录 Java开发的服务器

第一次写博客. 最近想做一个Web的自动登录,用户名和密码是RSA加密过的,后台是用的JAVA,我只会点C#,抓包什么都搞定了(使用的是Fiddler),不过由于C#和RSA的加密方式不同,我搞了N天,都搞不定,中间问过很多人,愿意帮助的人不多,可能是我太菜了.就是为了得到个认证的cookie,我中间用过Webbrowser控件,让人自己登录,然后得到Cookie,不过感觉终究是个半成品. 然而,C#和Java中间的RSA互转,我遇到了2个问题,网上都是public key 转 public k

RSA 数字签名算法(Java版)

数字签名算法Java版 还是上代码吧 public static final String SIGN_ALGORITHMS = "SHA1WithRSA"; /** * RSA签名 * @param content 待签名数据 * @param privateKey 私钥 * @param input_charset 编码格式 * @return 签名值 */ public static String sign(String content, String privateKey, St

微信支付获取code 和获取权限时的区别

参数:appid:公众号的唯一标识  redirect_uri:重定向的url,就是授权后要跳转的页面  scope:应用授权作用域 snsapi_base:不弹出授权页面,直接跳转,只能获取用户openid snsapi_userinfo:弹出授权页面,可通过openid拿到昵称.性别.所在地 state:重定向后带的参数

微信支付获取预支付订单id报错

<xml><return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[wxc9b1eb4c07373feb]]></appid> <mch_id><![CDATA[1263799101]]></mch_id>

RSA加密解密(python版)

RSA的算法涉及三个参数,n.e.d. 其中,n是两个大质数p.q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度. e1和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质:再选择d,要求(d*e1)mod((p-1)*(q-1))=1. (n,e),(n,d)就是密钥对.其中(n,e)为公钥,(n,d)为私钥.[1]  RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^d mod n:B=A^e mod n:(公钥加密体制中,一般用公钥加密,私钥解密) e

获取服务端https证书 - Java版

接上篇,用java代码实现一下获取远程服务端证书,还是拿新浪首页测试,上代码: package org.test; import java.net.URL;import java.security.MessageDigest;import java.security.cert.Certificate;import java.security.cert.X509Certificate;import javax.net.ssl.HttpsURLConnection; public class App

浅析微信支付:(余额提现)企业付款到微信用户零钱或银行卡账户

本文是[浅析微信支付]系列文章的第十二篇,主要讲解在商户存在的提现.商户付款到微信用户零钱或者银行卡需求. 浅析微信支付系列已经更新十二篇了哟-,没有看过的朋友们可以看一下哦. 浅析微信支付:支付验收示例和验收指引 浅析微信支付:如何使用沙箱环境测试 浅析微信支付:下载对账单和资金账单 浅析微信支付:申请退款.退款回调接口.查询退款 如果你是做电商或者某些有福利返利的系统,基本上会遇到诸如 余额提现 这类需求,主要就是平台向用户返利现金,积累到某一个门槛,可以领取到自己的余额账号.银行卡:或者是