pyopenssl - 下列有关openSSL的PHP代码,如果用Python实现?
<code>function getCertId($cert_path) { $pkcs12certdata = file_get_contents ( $cert_path ); openssl_pkcs12_read ( $pkcs12certdata, $certs, SDK_SIGN_CERT_PWD ); $x509data = $certs ['cert']; openssl_x509_read ( $x509data ); $certdata = openssl_x509_parse ( $x509data ); $cert_id = $certdata ['serialNumber']; return $cert_id; } </code>
我写了个Python的版本,使用的是pyopenssl,如下:
<code>'''解析pfx格式的证书ID,这里针对的是签名证书''' def getCertIdWithPFX(cert_path): fp = open(cert_path, 'r') if not fp: raise Exception('open %s fail!!!' % cert_path) pkcs12certdata = fp.read() '''先解析pkcs12格式''' sdk_sign_cert_password = config['sdk_sign_cert_password'] certs = OpenSSL.crypto.load_pkcs12(pkcs12certdata, sdk_sign_cert_password) '''然后解析x509格式''' x509data = certs.get_certificate() print x509data cert_data = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, x509data) print '-------------------', cert_data return cert_data.get_serial_number() </code>
问题主要出在x509data,我该如何才能得到x509data中的数据呢,Python中这是个对象。
回复内容:
<code>function getCertId($cert_path) { $pkcs12certdata = file_get_contents ( $cert_path ); openssl_pkcs12_read ( $pkcs12certdata, $certs, SDK_SIGN_CERT_PWD ); $x509data = $certs ['cert']; openssl_x509_read ( $x509data ); $certdata = openssl_x509_parse ( $x509data ); $cert_id = $certdata ['serialNumber']; return $cert_id; } </code>
我写了个Python的版本,使用的是pyopenssl,如下:
<code>'''解析pfx格式的证书ID,这里针对的是签名证书''' def getCertIdWithPFX(cert_path): fp = open(cert_path, 'r') if not fp: raise Exception('open %s fail!!!' % cert_path) pkcs12certdata = fp.read() '''先解析pkcs12格式''' sdk_sign_cert_password = config['sdk_sign_cert_password'] certs = OpenSSL.crypto.load_pkcs12(pkcs12certdata, sdk_sign_cert_password) '''然后解析x509格式''' x509data = certs.get_certificate() print x509data cert_data = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, x509data) print '-------------------', cert_data return cert_data.get_serial_number() </code>
问题主要出在x509data,我该如何才能得到x509data中的数据呢,Python中这是个对象。
from OpenSSL.crypto import load_pkcs12, FILETYPE_PEM, PKCS12, dump_certificate, dump_privatekey
cert_pem = dump_certificate(FILETYPE_PEM, certs .get_certificate())
key_pem = dump_privatekey(FILETYPE_PEM, certs .get_privatekey())

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

distinct 和 distinguish 虽都与区分有关,但用法不同:distinct(形容词)描述事物本身的独特性,用于强调事物之间的差异;distinguish(动词)表示区分行为或能力,用于描述辨别过程。在编程中,distinct 常用于表示集合中元素的唯一性,如去重操作;distinguish 则体现在算法或函数的设计中,如区分奇数和偶数。优化时,distinct 操作应选择合适的算法和数据结构,而 distinguish 操作应优化区分逻辑效率,并注意编写清晰可读的代码。

在PHP8 中,match表达式是一种新的控制结构,用于根据表达式的值返回不同的结果。1)它类似于switch语句,但返回值而非执行语句块。2)match表达式使用严格比较(===),提升了安全性。3)它避免了switch语句中可能的break遗漏问题,增强了代码的简洁性和可读性。

PHP中的...(splat)操作符用于函数参数和数组解包,提升代码简洁性和效率。1)函数参数解包:将数组元素作为参数传递给函数。2)数组解包:将一个数组解包到另一个数组中或作为函数参数。

C语言中没有内置的sum函数用于求和,但可以通过以下方法实现:使用循环逐个累加元素;使用指针逐个访问并累加元素;对于大数据量,考虑并行计算。

H5页面需要持续维护,这是因为代码漏洞、浏览器兼容性、性能优化、安全更新和用户体验提升等因素。有效维护的方法包括建立完善的测试体系、使用版本控制工具、定期监控页面性能、收集用户反馈和制定维护计划。

复制粘贴代码并非不可行,但需谨慎对待。代码中环境、库、版本等依赖项可能与当前项目不匹配,导致错误或不可预料的结果。务必确保上下文一致,包括文件路径、依赖库和 Python 版本。此外,复制粘贴特定库的代码时,可能需要安装该库及其依赖项。常见的错误包括路径错误、版本冲突和代码风格不一致。性能优化需根据代码原用途和约束重新设计或重构。理解并调试复制的代码至关重要,切勿盲目复制粘贴。
