这个是真的难住了,github各种技术论坛都没有python的pkcs#7和数字证书的方法。对面直接丢给我一个书名剩下的自己解决。没办法一直跟政府打交道的公司,这个代码不好上,而且是不想回忆的往事,先说解决方法。最后使用的现成的java例子,用了python去调用java代码。jpype,分个步骤讲解一下

1. 证书取出公私密钥的方法,虽然最后还是用的整个证书,但是这个方法研究了一下。相信你有实验的证书,我就不上传了

pfx格式证书转化为pem格式
openssl pkcs12 -in test.pfx -out server.pem -nodes

提出证书公钥
openssl x509 -in server.pem -out server.crt

pem证书提取pkcs#8私钥
openssl pkcs8 -topk8 -inform PEM -in server.pem -outform pem -nocrypt -out pri.pem

提取私钥
openssl rsa -in server.pem -out server.key

pem证书提取公钥

openssl rsa  -in server.pem -outform pem -pubout -out pub.pem

2. 使用python调用java,首先需要将java代码打成jar包。妈的我不懂java,费死劲了。网上教程自己搜一下。最重要的是打成jar包以后,需要在.mf写入java三方包的地址。下面的例子忘了好使不,先上了再说

java运行命令
java -cp ./:/home/nanfengpo/guangdong/diaoyongjava/java/lib/bcpkix-jdk15on-154.jar:/home/nanfengpo/guangdong/diaoyongjava/java/lib/bcprov-jdk15on-154.jar: testP7
java编译命令
javac -Xlint:unchecked -cp  ./:/home/nanfengpo/guangdong/diaoyongjava/java/lib/bcpkix-jdk15on-154.jar:/home/nanfengpo/guangdong/diaoyongjava/java/lib/bcprov-jdk15on-154.jar:  testP7.java
java打包命令
java -Xbootclasspath/a:/home/nanfengpo/guangdong/diaoyongjava/java/lib/bcpkix-jdk15on-154.jar:/home/nanfengpo/guangdong/diaoyongjava/java/lib/bcprov-jdk15on-154.jar:-jar test.jar
jar运行
java -jar fpx_agw1.jar

需要将上面的jar的地址写入mf文件./:/home/nanfengpo/guangdong/diaoyongjava/java/lib/bcpkix-jdk15on-154.jar:/home/nanfengpo/guangdong/diaoyongjava/java/lib/bcprov-jdk15on-154.jar这是我的三方包地址./必须写在前面,原因忘了,哈哈。这是mf文件中的例子:

Manifest-Version: 1.0
Main-Class: testP7
Class-Path: /home/nanfengpo/guangdong/diaoyongjava/java/lib/bcpkix-jdk15on-154.jar
  /home/nanfengpo/guangdong/diaoyongjava/java/lib/bcprov-jdk15on-154.jar

最好找个专业java打包,他们三分钟解决。

3. 重点了,兄弟们。jpype,安装去github上直接找到官方,下载安装包,什么java运行环境啥的都给你搞定。

def jvmstart():from jpype import startJVM, JClassimport os.pathimport jpypeif not jpype.isJVMStarted():  # 查看java虚拟机启动没有# print('还没启动')basepath = os.path.dirname(__file__)jvmpath = jpype.getDefaultJVMPath()      # 自己查找java的运行地址jvmarg = "-Djava.class.path=%s" % os.path.join(basepath,'fpx_agw.jar')   # 我们的jar包的地址# print(jvmarg)startJVM(jvmpath,"-ea", jvmarg)  # 启动参数 java运行地址,jar包地址Properties = JClass("testP7")    # 实例化那个进行加密的类return Properties# print('已经启动')jpype.attachThreadToJVM()           # 我们的程序肯定是多线程多进程。需要使用这个,不能等着爆炸,报不知名错误Properties = JClass("testP7")          return Properties
def jvmshutdowm():                 # 这个方法不需要调用了,因为多线程,不能每次关闭from jpype import shutdownJVMimport jpypeif not jpype.isJVMStarted():shutdownJVM()# print('用完关闭')# print('还没开启')

python rsa256 padding pkcs#7 GDCA 之前难了半个月的难题相关推荐

  1. Python 获取当天日期、前一天日期、前半个月

    Python 代码如下: import datetime# 获取当前时间 now_time = datetime.datetime.now() print("now time: " ...

  2. 自学了半个月感觉一点也没学会Python,Python真的有这么难学吗

    Python的基础语法掌握是必备的技能,认识到了Python语言的美妙,即使你之前用过其他的开发语言,也会转到Python的行列之中.掌握字符串的解析未来你会意识到各种各样的程序直接把字符串传来传去, ...

  3. java pkcs_在 Python 3 (PKCS#1)中,如何正确使用来自 Java (PKCS#8) 的 RSA 私钥,进行数据解密?...

    问题描述 在使用 Python 访问由 Java 写的服务器的时候,服务器返回的资源是通过 RSA 加密的,我有 Java 中生成的 RSA 私钥字符串.但是在解密的时候,出现问题. 后面了解到(看了 ...

  4. python接单业余赚钱的门路_用Python赚钱的5个方法,教你业余时间月赚几千外快...

    原标题:用Python赚钱的5个方法,教你业余时间月赚几千外快 Python作为一门编程语言,一门技术,就一定能够为我们所用,至少赚个外快是绝对没有问题的. 我之前做过半年少儿编程老师,一个小学四年级 ...

  5. 自学了半个月python,感觉没用,怎么办?

    作者:千锋实践训练营 链接:https://www.zhihu.com/question/381078052/answer/1154953727 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...

  6. Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大

    Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大蟒 ...

  7. python时间比较好_花了半个月时间,终于找到了一款最适合的python教程

    最近会有一些广告主来找想在星佳的这个个人公众号上投放广告,但偏偏有些内容确实不能推,哪怕赚钱,其实也并不是自己多有良心,只是去帮那些产品站台带来的风险和他们给的那点广告费比,完全没在一个数量级,说这个 ...

  8. 半个月爆肝,Python学习指南:学习方法、路径图、资料都备齐了!

    1.6米长,八年Python使用经验,耗时半月,制作了这张Python学习路径图! 视频大纲: 自己的课代表 1.为什么学习python 00:43 2.python学习路径图和python备忘手册( ...

  9. python好学-所有人都说Python 简单易学,为何你觉得难?

    记得刚学Python的时候,几乎所有人都说Python 简单易学,而对于编程零基础,只掌握Word和Excel的人来说,感觉真的好难. 学习之前网上的教材看了,Python的书也看了,包括<核心 ...

最新文章

  1. 关于学习Python的一点学习总结(22->相关的迭代操作)
  2. 【FTP】FTP 命令模式下 PASV OR PORT
  3. java遍历目录下的包括子目录下的所有文件
  4. 刘翔博客答即时通信公司网友提问
  5. c mysql 插入大量数据_C++操作MySQL大量数据插入效率低下的解决方法
  6. mysql 分号子查询_MySQL子查询详解
  7. 深度学习2.0-30.卷积神经网络之池化与采样
  8. 【气动学】基于matlab GUI弹道仿真【含Matlab源码 1136期】
  9. Redis-配置文件
  10. SSM搭建-Spring之bean的属性值XML注入方式(4)
  11. iOS获取屏幕尺寸的方法
  12. 知物由学 | SO加固如何提升Android应用的安全性?
  13. 怎么学python-Python 应该怎么学?
  14. 农产品追溯管理平台解决方案
  15. What is XMP
  16. 机器学习之PQ量化算法
  17. phpstudy_pro启动mysql后循环停止又重启
  18. P6560 [SBCOI2020] 时光的流逝 (博弈,反向建图,拓扑排序
  19. 【水声通信】使用Bellohop模型产生水声信道,采用相干检测的方法进行PSK、QAM调制解调【matlab源码】
  20. PHP获取路径和目录方法

热门文章

  1. 前端开发的工作职责精选【10篇】(合集)
  2. tars C++ docker 环境配置
  3. ASCII码转16进制 十六进制转ASCII码
  4. 计算机主机的输出设备,电脑怎么切换输出设备
  5. mac查看隐藏文件(夹)
  6. python画图绘制紫荆花_数据结构(平衡树,树分治,暴力重构):WC 2014 紫荆花之恋(示例代码)...
  7. tikz包 安装_LaTex各种安装
  8. 解读电容参数:X5R,X7R,Y5V,COG到底什么意思?
  9. openmv与stm32之间的通信学习(数字识别)
  10. deepin---VMware虚拟机与主机共享文件夹