python 关于 OpenSSL.crypto 模块验签问题

对接一个接口,在数据发送与接收时需要rsa签名和验签。

采用 OpenSSL.crypto 模块进行签名

签名的主要部分是:

from OpenSSL.crypto import load_privatekey,FILETYPE_PEM,sign,verify

 def tosign(data,private_key):
                    key = load_privatekey(FILETYPE_PEM, private_key)
                    return base64.b64encode(sign(key,data,'sha1'))

def verysign(data,getsign,public_key):
          sign = base64.b64decode(getsign)
                    key = load_certificate(FILETYPE_PEM,public_key)
                    ret = verify(key,sign,data,'sha1')
                    return ret

密钥是”BEGIN RSA PRIVATE KEY --- END RSA PRIVATE KEY”
公钥是 “ BEGIN PUBLIC KEY --- END PUBLIC KEY”

签名是没有问题的,但是验签会报错:[('PEM routines', 'PEM_read_bio', 'no start line')]
对一些加密解密加签的本来就不熟,在 google 后更加蒙蔽了,所以想请问各位大佬指出一下问题,给个解决方案或者一点建议

0

3个回答

0

用一个全局队列,进来函数就把当前时间与队头的时间比较,差在限定时间内就返回不执行下面操作,否则就把当前时间塞入队列并继续执行函数下面操作。最后维护一下队列元素的个数就行了。

0
-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python与Java之间的签名和验签问题
n// 最新碰到一个需求, 需要同java下的签名做验签, 感觉有必要总结下:n// 整个过程碰到以下几个问题:n/*n 1、如何生成指定的公私钥?n # 使用linux指令openssl, openssl这个东西是真的强, (证书问题, 加解密问题, 公私钥问题等)都能帮你处理的妥妥滴; 有兴趣和时间的童鞋建议好好玩玩这东西. (yum install openssl* -y)n 私...
用Python实现RSA签名和验签
唠叨两句,蹭点篇幅nnRSA是一种非对称加密算法,简单理解就是两个密钥:一个公钥,一个私钥。 n同时它也可以用来签名和验签,正好与加密相反。nnn加密:公钥加密,私钥解密;n签名:私钥签名,公钥验签。nnn有意思的是有些人分不清公钥私钥的用处,这里提供一个思路: n用作加密时,密文泄露是无所谓的(相对而言),重要的是用于解密的密钥必须安全,所以用不公开的私钥来解密,用公钥来加密; n用作签名时,目
支付宝沙箱支付 验签失败 appid错误
前一篇文章我说到了搭建整个demo,现在是我搭建完运行时遇到的错误。如果搭建demo有问题的可以参考我这篇文章nnhttps://blog.csdn.net/qq_40312707/article/details/89815094nn1.验签失败nn验签只需要使用到支付宝公钥 ,而不是使用应用公钥!我在前一篇已经说过了,一定要用应用公钥旁边的那个支付宝公钥。nn2.appid错误nn// 支付宝网...
Python使用SHA1withRsa算法实现签名
Python使用SHA1withRsa算法实现签名n代码nbiz_content = {"amount": int(money) * 100,n "pay_type": "KJ-UY",n "merType": "1",n "tradeName": "充值{}&quo
golang中关于RSA加密、解密、签名、验签的通用处理方式
前言n我在golang中关于RSA加密、解密、签名、验签的总结一文中介绍了常见的一些使用情况,并做了一些针对性的方法实例。但鉴于实例中部分参数稍微变化则需要调整整个方法,本文则从通用的角度去处理这些差异点,正确在可设置的范围内实现通用的方法。n方案说明nRSA目前常用的就是加密、解密、签名、验签相关的内容,我们则从这4个方向去做通用的解决方案。以下是具体的情况总结,与前言中提到的文章有关n1.私钥...
加密解密与签名验签
下图以对接银联系统为例。个人拙见总结。欢迎拍砖指正。共同进步!       整个过程涉及两对秘钥,都是由银联boss管理和下发: (1)商户系统的公钥和私钥;(2)银联的公钥和私钥。
Python实现RSA签名,验签
import rsan# 生成密钥n(pubkey, privkey) = rsa.newkeys(1024)n# 保存密钥nwith open('public.pem','w+') as f:n f.write(pubkey.save_pkcs1().decode())nwith open('private.pem','w+') as f:n f.write(privkey.save_pkc...
验签排序问题
Map params = new TreeMap()rnrnrnStringBuffer signData = new StringBuffer();rnfor (Entry entry : params.entrySet()) {rnsignData.append(entry.getKey()).append("=").append(entry.getValue()).append("&");r
新版支付宝WAP支付成功回调接口验签失败问题解决办法
支付宝旧版回调验签使用的是  AlipayNotify.verify(params),新版本采用的是AlipaySignature.rsaCheckV1,AlipaySignature类在新版SDK包的路径com.alipay.api.internal.util中,但是在验签过程中报以下错误:java.io.IOException: ObjectIdentifier mismatch: 2.16.
RSA加密解密签名验签代码(sun、BC)
NULL 博文链接:https://chun521521.iteye.com/blog/2425300
python rsa 公私钥加签验签
使用openssl 生成一把2048bit长度的钥匙对,首先我们生成一把.pem格式的私钥:rnopenssl genrsa -out private_key.pem 2048rnrnrn然后通过这把私钥生成.pem格式的公钥:rnopenssl rsa -in private_key.pem -pubout -out public_key.pemrnrnrnimport rsarnwith op
PHP接口验签----一种简单可行的方式
背景:服务端和第三方服务有接口对接,那么第三方有没有一种简单的方式判断请求发自合法的合作方呢? n有一种简洁的方式就是,双方维护同一份私钥,在发起请求的时候,发起方将当前的请求参数,按照key值进行排序,然后’key=value’拼接到私钥后面,进行md5的编码。接收方以同样的处理方式,签名一致则合法,否则非法。如下为php的对应的sig生成算法举例:nnnn//摘抄自http://docs.de...
关于支付宝同步验签成功而异步验签失败的解决办法
支付宝这个验签真是坑多多啊n官方demo里给的验签代码如下n Map<String, String> params = new HashMap<String, String>();n Map<String, String[]> requestParams = request.getParameterMap();n for (Iterator<S...
[Python3] RSA的加解密和签名/验签实现 -- 使用Crypto
前言nn关于非对称加密算法我就不过多介绍了,本文着重于python3对RSA算法的实现。nn正文nnnfrom Crypto.PublicKey import RSAnimport Crypto.Signature.PKCS1_v1_5 as sign_PKCS1_v1_5 #用于签名/验签nfrom Crypto.Cipher import PKCS1_v1_5 #用于加密nfrom Crypt...
支付宝回调接口验签失败
支付宝回调接口验签失败
【JAVA】加密/解密与签名/验签
(本人是菜鸟一枚,仅代表个人的一些见解,如有不对,请轻喷!!!!)rn  在进行系统通信时,对于一些比较隐私的信息不希望第三方看到,因此需要进行加密处理,以防止信息泄露。故在进行加密需要加密/解密,为了保证数据的完整性,需要签名/验签。rn1.加密/解密rn    加密:顾名思义是对一组明文数据进行加密,变为“不可辨”的字符串的过程。rn    解密:将一组“不可辨”的字符串还原为明文数据的过程。
Python 私钥生成签名和公钥验签的两种方式
import osnimport base64nimport rsan# 安装pycryptonfrom Crypto import Randomnfrom Crypto.Hash import SHA256nfrom Crypto.PublicKey import RSAnfrom Crypto.Signature import PKCS1_v1_5 as Signature_pkcs1_v1_...
支付宝手机支付异步调用验签失败问题
在调试支付宝手机支付异步调用时如果参数中没有中文,验签成功;参数中有中文时,验签失败,纠结了2天,终于定位了。在发请求时,和接收请求验签时将编码统一为UTF-8即可,之前一直是GBKalipayRequest.setBizContent("{"  + " \"out_trade_no\":\""+paymentRecord.getOutTradeNo()+"\","  + " \"tota
跨平台rsa签名与验签
本文主要讲java和python平台的rsa签名与验签,java使用的是16进制密钥,python使用的是pkcs8编码格式的密钥,其原理其他平台也可以参考。
OpenSSL和Python实现RSA Key数字签名和验证
基于非对称算法的RSA Key主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密)。本文提供一个基于OpenSSL命令行和Python的数字签名和验证过程的例子,另外会另起一篇使用OpenSSL和Python进行非对称加解密的例子。nnnn1. OpenSSL实现数字签名和验证nnnn1.1 生成私钥nn生成2048 bit的PEM格式的RSA Key:Ke...
加密与解密、加签与验签
参考博客:rn--SHA-1算法、SHA-2算法rn[url]https://www.sohu.com/a/192953382_604699[/url]rn--SSH 密钥类型的的选择(RSA, DSA or Other)rn[url]http://blog.sina.com.cn/s/blog_6f31085901015agu.html[/url]rn--DSA和RSA的区别 rn[url]ht...
RSA生成公私钥文件&私钥加签/公钥验签&公钥加密/私钥解密
 1.编写RSAUtil.java工具类nnnpackage util;nnimport sun.misc.BASE64Decoder;nimport sun.misc.BASE64Encoder;nnimport javax.crypto.Cipher;nimport java.io.*;nimport java.security.*;nimport java.security.interfac...
一张图了解RSA加解密与加验签
RSA加密验签是对安全性要求比较高的机构间通信常用的方式,密钥足够长的情况下,当前的计算能力还不足以解密(不过量子计算机...未来谁知道呢!)。然而,我发现还是有人对这种过程一知半解。比如你们的加签算法用的什么?回答RSA......比如有些机构会对生成的密钥对再用Base64进行编码,这样使用的时候就需要对应的解码,这个过程都被封装在工具类里面了,所以大家看代码的时候尽量多进去看看源码。RSA只
支付宝SDK 返回验签的错误BUG修改解决方案
验签的问题一直报错,无语了..............rn不知道编写的人是个什么想法rnrnrnrnrnrnrnrnrnrnrn具体修改如下rnrnrn在保证不影响原代码的处理下,多加一个分支判断rn(怕其他地方要用到他的这个代码)rnrnrnrnrnrnrn又不见了几个小时
支付宝电脑支付notify异步返回验签失败坑
如果遇到异步返回总是失败,但是同步返回成功的情况就要注意一个地方了那就是这里:rn$arr=$_POST;n$alipaySevice = new AlipayTradeService($config); n$alipaySevice->writeLog(var_export($_POST,true));n$result = $alipaySevice->check($arr);rn支付宝返回数据
记录一下jsrsasign加密,解密,签名,验签
为防止原博主删除原文章,这里记录一下n你将会收获:nn1.js如何加密, 解密n2.js如何签名, 验签n3.js和Java交互如何相互解密, 验签(重点)nn通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方法, 是结合网上千篇一律的博文, 加上我自己查看源码总结出来的.n公用代码:n// 公钥n let pk="-----BEGIN PUBLIC...
IOS实现RSA2签名与验签
ios端实现RSA2加签验签。包括签名方法和验签方法。包括签名方法和验签方法。
ECDSA签名+验签
    ECDSA签名每次结果不同。 nn    原因:ECDSA签名过程中混入随机值,生成签名结果不同。nn    公钥证书验签没问题。nn nn1. 签名过程nn    假设要签名的消息是一个字符串:“Hello World!”。DSA签名的第一个步骤是对待签名的消息生成一个消息摘要。不同的签名算法使用不同的消息摘要算法。比如,DSS使用SHA1来生成160比特的摘要,而ECDSA256使用S...
MD5加密及’解密‘ 验签详解
为什么MD5不能解密?nnMD5 是不可逆的n也就是没有对应的算法,能从生产的md5值逆向得到原始数据。nmd5作为数据库中的主键可行吗?这就涉及到一个问题,md5值是唯一的吗?答案是,不唯一。n也就是一个原始数据,只对应一个md5值;但是一个md5值,可能对应多个原始数据。nMD5加密原理是散列算法,散列算法也称哈希算法。n计算机专业学的数据结构就有哈希表这一知识点。n比如10除
MD5验签
package com.yongda.site.app.util;rnimport java.io.UnsupportedEncodingException;rnimport java.security.MessageDigest;rnimport java.security.NoSuchAlgorithmException;rnimport java.security.SignatureExce
Java Http接口加签、验签操作
1、业务背景n最近接触了一些电商业务,发现在处理电商业务接口时,比如淘宝、支付类接口,接口双方为了确保数据参数在传输过程中未经过篡改,都需要对接口数据进行加签,然后在接口服务器端对接口参数进行验签,确保两个签名是一样的,验签通过之后再进行业务逻辑处理。n2、处理思路n双方约定好,参数按特定顺序排列,比如按首字母的顺序排列,如url:http://xxx/xxx.do?a=wersd&b=sd
php对接java现实加签验签
我实现的方法,主要是把java生成的密钥转为php能识别的pem格式的密钥,其它的加签、验签采用调用openssl内置签名方法。njava生成的密钥主要是字符串;而pem格式密钥是以64位为一行,并且带有如下头和尾的文件格式,然后php再去取得相对应pem格式字符串。nnnpem格式密钥n-----BEGIN PUBLIC KEY-----n//64chars一行(多行)n-----EN
讲讲在银联电子支付工作时加解密、签名验签的那些事(纯粹的干货)。
        今天我们来讲讲系统间的交互需要哪些必要的东西才能确保互相通信会没有问题呢?首先来看看最传统的系统交互,即两者直接互相明文传送,在这种情况下,若是被第三方拦截,会造成不可预估的影响。那么针对这种情况我们应该如何避免呢?那好,我们来看看银联电子支付公司是如何解决这个问题的。他们的解决方案适用于大部分情况下。(下面所描述的A代表商户,B代表CP即ChinaPay)        在交互的...
一个验签文件
支持pfx加签验签,dsa的加签验签,程序很乱,还在改进。
图解SM2算法流程——第2章 签名验签
A.2 第2部分——数字签名算法nnA.2.1 签名(User A)nnl  签名者用户A的密钥对包括其私钥dA和公钥PA=[dA]G= (xA,yA)nnl  签名者用户A具有长度为entlenA比特的可辨别标识IDA,nnl  ENTLA是由整数entlenA转换而成的两个字节nnl  ZA=H256(ENTLA || IDA || a || b || xG || yG|| xA || yA)...
关于MD5验签失败 同一字符串 调用相同的加密方法 出现加密的值不一样的问题
废话不多说直接上代码rn public static String getMD5Str(String str) {  rn  byte[] msg = str.getBytes();rnMessageDigest messageDigest = null;rntry {rnmessageDigest = MessageDigest.getInstance("MD5");rnmessageDiges
C#验签验证java生成的data、sign、publicKey
 第一次用C#验签 验证java生成的data、sign、publicKey。测试过了可以用。nnn JObject jo = (JObject)JsonConvert.DeserializeObject(“java提供的json字符串”);n string sing = jo["sign"].ToString();//获取签名n var...
支付宝异步通知 ,签名验证问题
1.构建参数n Map<String, String[]> parameters = req.getParameterMap();n Map<String, String> parameterMap = new HashMap<>();n for (Object v : parameters.entrySet()) {n Map.Entry<Stri...
写一个RSA签名与验签的Demo
一、RSA私钥及公钥生成rnrnOpenSSL工具安装rnRSA私钥及公钥生成rnOpenSSL工具安装rnrnrnLinux用户(以Ubuntu为例)rnsudo apt-get install opensslrnrnRSA私钥及公钥生成rnrnLinux用户(以Ubuntu为例)rn$ openssl 进入OpenSSL程序rnOpenSSL> genrsa -out rsa_private_
RSA sha-256加密解密,加签验签工具类
spring框架中关于RSA sha-256加密解密,加签验签工具类
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 关于python培训班 python模块详细教程