X509Certificate2类怎样导入一个公钥字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了X509Certificate2类怎样导入一个公钥字符串相关的知识,希望对你有一定的参考价值。

参考技术A 使用X509Certificate2.GetPublicKeyString()难度比较大。

它格式用的是DER Encoding of ASN.1 Types。
比如3082010A0282010100D93E8921F06B5A2E9...0203010001
30:表示SEQUENCE类型
82010A:表示SEQUENCE长度为010A(其中82超过80,表示后面有2个字节的长度信息)
02:表示整数类型
820101:表示整数长度为0101(十进制为257)
00D93E89...:该整数就是modulus,00用来表示正整数,扣除00后还有256个字节,因此modulus为256个字节
最后是Exponent
0203010001: 02表示整数,03长度为3,010001就是Exponent

既然A单位可以得到GetPublicKeyString,建议A单位转为提交
X509Certificate2.PublicKey.Key.ToXmlString(),给出的xml类似:

<RSAKeyValue>
<Modulus>2T6J...Yvy3PTw==</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>

该xml直接给出了Modulus和Exponent,并可以直接被RSACryptoServiceProvider导入。
如果注意观察,其中Exponent的AQAB就是010001这3个字节的Base64编码,而Modulus的2T6J...就是D93E89...的Base64编码。

支付宝电脑网站支付demo导入idea运行

支付宝支持沙盒模拟真实的支付环境,方便开发者学习与调试,
下面是使用支付宝沙盒环境来模拟运行支付宝web端支付的demo过程

创建支付宝沙盒账号
点击进入支付宝沙箱地址
支付宝沙盒中默认创建了一个应用


生成应用公钥
这里借助支付宝的工具生成应用公钥私钥 下载地址

下载完成后,打开工具,设置好秘钥长度和格式后点击生成秘钥


设置应用公钥,并获取支付宝公钥
复制生成的应用公钥,回到沙箱环境,点击设置

加密模式选择公钥,将应用公钥复制到下方

保存设置后会生成支付宝公钥,保留支付宝公钥会在项目中使用到


下载demo运行
下载地址


将demo导入到idea中运行
生成web.xml文件

如下图所示操作

点击选择我们的项目

将/WebContent/WEB-INF/lib目录下的jar包添加到项目中

配置tomcat

 

运行项目遇到的坑
解决方法

配置参数
在AlipayConfig.java文件中配置如下参数


启动效果

————————————————
版权声明:本文为CSDN博主「露天窗」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lutianchuang/java/article/details/105994610

 

 

 

前言

官方示例Demo的运行环境为Eclipse,本次主要针对IDEA中导入遇到的一些问题

本地环境:IDEA + Tomcat8.5

1、错误一

Error:(1, 1) java: 非法字符: ‘ufeff‘
Error:(110) java: 需要classinterfaceenum

请参考这篇文章:https://www.cnblogs.com/niceyoo/p/12199287.html

2、错误二

org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [4.0]。
将使用默认版本。

错误原因:当前 Tomcat8.5 不支持 Web4.0 版本,可以尝试降低 Web 版本,或者是提高 Tomcat 版本。

以降低 Web 为例,找到 web.xml 修改 version,具体如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
</web-app>

3、错误三

org.apache.jasper.servlet.TldScanner.scanJars 
至少有一个JAR被扫描用于TLD但尚未包含TLD。 
为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 
在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。

指定扫描路径:支付 Demo 这里为 WebContent

技术图片

在弹出来的路径中选中当前项目的 WebContent

技术图片

 

 

 

支付宝沙箱环境显示支付存在钓鱼风险

小四是个程序员 2020-06-04 14:20:50 726 收藏
分类专栏: 支付宝支付
版权

今天用沙箱环境测试支付宝的网站支付功能,结果给我提示存在钓鱼风险,给我整蒙逼了,然后通过搜索发现这个问题关闭掉你登录沙箱环境的网页就行了,我直接把浏览器所有打开的网页全部关掉,重新打开重新访问,结果就正常访问了,不知道能不能解决你的问题。
————————————————
版权声明:本文为CSDN博主「小四是个程序员」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42322648/java/article/details/106545770

 

以上是关于X509Certificate2类怎样导入一个公钥字符串的主要内容,如果未能解决你的问题,请参考以下文章

使用X509Certificate2类操作证书文件

将私钥与 .net 中的 X509Certificate2 类关联

获取 X509Certificate2 私钥和公钥

使用私钥将 X509Certificate2 导出到字节数组

关于 X509Certificate2 程序发布IIS后找不到文件路径的问题

x509数字证书导入-然后删除本身