您现在的位置是:首页 > 正文

微信支付开始涉及的一些内容

2024-02-01 04:35:10阅读 3

1、获取腾讯rsa证书格式是pkcs#! ,需要转换,参考如下

  1. PKCS#1 转 PKCS#8:

openssl rsa -RSAPublicKey_in -in <filename> -pubout

  1. PKCS#8 转 PKCS#1:

openssl rsa -pubin -in <filename> -RSAPublicKey_out



Java RSA以 " RSA/ECB/OAEPWITHSHA-1ANDMGF1PADDING"方式加密


	/**
	 * 微信支付取到的rsa证书格式是: 公钥格式PKCS#1  ,需要把证书转换成,PKCS#8
	 * 命令 : openssl rsa -RSAPublicKey_in -in <filename> -pubout
	 * pem 公钥 加载
	 * @return
	 * @throws Exception
	 */
    public static PublicKey GeneratePublicKeyFromPem(String cerFilePath) throws Exception {
     
        try {
        	BASE64Decoder base64decoder = new BASE64Decoder();
        	BufferedReader br = new BufferedReader(new FileReader(cerFilePath));
        	String s = br.readLine();
        	StringBuffer publickey = new StringBuffer();
        	s = br.readLine();
        	while (s.charAt(0) != '-') {
        		publickey.append(s + "\r");
        		s = br.readLine();
        	}
        	System.out.println("publickey="+publickey);
        	byte[] keybyte = base64decoder.decodeBuffer(publickey.toString());
        	KeyFactory kf = KeyFactory.getInstance("RSA");
        	X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keybyte);
        	PublicKey publicKey = kf.generatePublic(keySpec);
         
            return publicKey;
        } catch (Exception e) {
            Logger.getLogger("").info("读pem文件生成公钥出错:" +e.toString());
            throw e;
        }
    }
    /**
     * 微信支付使用的RSA 加密方式
     * @param str
     * @return
     */
    public static String RsaEn(String str){
    	String result=null;
    	try{
    		PublicKey  publicKey=GeneratePublicKeyFromPem(str);  
        	Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWITHSHA-1ANDMGF1PADDING");
        	
        	cipher = Cipher.getInstance(keyAlgorithm);  
            cipher.init(Cipher.ENCRYPT_MODE, publicKey); //公钥加密  
            byte[] encrypt = cipher.doFinal(str.getBytes());  
            
            	
            
        	result=new BASE64Encoder().encode(encrypt);
    	}catch(Exception e){
    		Logger.getLogger("").info("RSA加密出现异常:"+e.toString());
    		e.printStackTrace();
    	}
    	return result;
    }
    


网站文章

  • 腾讯云服务器免密登陆permission denied解决

    ssh-keygen 生成了私密钥对之后使用 ssh-copy-id name@sever试图实现免密登陆,提示permission denied。按照网上常见的解决方法,查看了ssh的配置文件等东西...

    2024-02-01 04:34:42
  • 《LeetBook》leetcode题解(17):Letter Combinations of a Phone Number[M]

    《LeetBook》leetcode题解(17):Letter Combinations of a Phone Number[M]

    017. Letter Combinations of a Phone Number[M]问题Given a digit string, return all possible letter comb...

    2024-02-01 04:34:37
  • 聊聊MySQL里面的undo Log、redo Log和bin Log日志的原子性和持久性已经复制和恢复数据实现过程

    聊聊MySQL里面的undo Log、redo Log和bin Log日志的原子性和持久性已经复制和恢复数据实现过程

    最近闲来无事自己突发奇想的想看一下MySQL的存储引擎,看了事务相关的ACID,想了解MySQL是怎么实现数据的持久性和数据的一致性,自己上网看了一下MySQL里边出现的几种常见的log,根据自己的了...

    2024-02-01 04:34:31
  • 从入门到入土:基于Python采用TCP协议实现通信功能的程序

    从入门到入土:基于Python采用TCP协议实现通信功能的程序

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益。不合适引用,自当删除! 若...

    2024-02-01 04:34:03
  • 小程序海报生成工具,可视化编辑直接生成代码使用

    开门见山工具地址 点我直达>>painter-custom-poster由于挂载在github page上,打开速度会慢一些,请耐心等待或自行解决git网速问题背景在做小程序时候,我们经常会有一个需求,需要将小程序分享到朋友圈,但是朋友圈是不允许直接分享小程序,那我们还有其他的办法解决吗?答案肯定是有的,即 canvas 生成个性化海报分享图片到朋友圈分析小程序...

    2024-02-01 04:33:50
  • 卷积和反卷积

    卷积和反卷积

    其最后得到一个34*1的张量。

    2024-02-01 04:33:44
  • LeetCode 1248. Count Number of Nice Subarrays【前缀和,哈希表;数学;滑动窗口】中等

    本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。

    2024-02-01 04:33:14
  • VS的release模式下,如何使断点生效

    3、连接器——调试——生成调试信息——生成调试信息(/DEBUG)1、c++——常规——调试信息格式——(程序数据库/Zi)2、c++——优化——优化——已禁用。打开项目属性,设置以下内容。

    2024-02-01 04:33:07
  • 华为2018届校招勇敢星实习生招聘笔试+面试经历

    华为2018届校招勇敢星实习生招聘笔试+面试经历

    写在前面  之前一直在忙期末,最近才歇了下来,来总结一下之前参加华为2018届勇敢星实习生笔试+面试(研发类)并顺利拿到offer的经历。   我是在微信上投的Android研发实习生岗,很快就收到...

    2024-02-01 04:33:00
  • C++ 网络编程 TCP 用select实现的并发 异步

    C++ 网络编程 TCP 用select实现的并发 异步

    https://blog.csdn.net/xiyangxiaoguo/article/details/107179169 上一篇采用的是建立新的线程的方法去处理一个新的客户端到服务器的TCP连接,对...

    2024-02-01 04:32:31