php验签,在php中验证签名
以下脚本生成一对密钥,并在数据“ 123”上签名
def newkeys(keysize):
random_generator = Random.new().read
key = RSA.generate(keysize, random_generator)
private, public = key, key.publickey()
return public, private
def getpublickey(priv_key):
return priv_key.publickey()
def sign(message, priv_key):
signer = PKCS1_v1_5.new(priv_key)
digest = SHA256.new()
digest.update(message)
return signer.sign(digest)
msg = b"123"
(public, private) = newkeys(2048)
signature = b64encode(sign(msg, private))
print("Private: ", private.exportKey('PEM'))
print("Public: ", public.exportKey('PEM'))
print("Signature: ", signature)
输出:
私密:b'----- BEGIN RSA PRIVATEKEY ----- \ nMIIEpAIBAAKCAQEAozqilJ6dw5l13MMZT3hFfw5Xvo0B / TwHxyW7dlCsjuSvRBm3 \ nyLdaEfd5diZVaXnmzGuq5mRR1Mq9BvZ2BffUTN4Oqre8jQSrupB5TfEkU61eFWIn \ nwz9RwZaR / LBH6WdCz9hJppx9sH6qK4Sql2qYx0t + wk6QESPS5thWssiKhsqkXx + 6 \ n9PJICO1ug2fdhv / Lwmm3dNDyP / pA0qn0eE6AytrXTVcmBDE2oiksWs8G5Mt4nQGA \ njAp04c1M12ruBsLu5FHxwwr2QCq04kFM6Oqe9nZSR7K5KZIrv + XkOPuBK9RhhSSn \ nKN6mRw8RjL7xui + m45iPmLRI + zVuK6negubevwIDAQABAoIBADdro6LZXhB47Msp \ nVNEmMVZr3L / eaYP9G1jzBzyrNIOJwrZZEwzrsAG0qEFEz7AxyvqyPcLe4efhdB / G \ nk5kAJc15gbpWCwdIRDRidEVR8DcXAIA7JOwGdjBH + sY0Zh4pyMYAFjWjIYvI3edL \ nso4Zi8jy6ZV4jjK7mpJ1dq5aJ6qO3UIz +2米/ 55Fop / H + UtP57ENji0vxyfrXKq0p \ nRyI1iwbBMVLlcuFuNDeLHXzCOAeIY0BzB9o097VH3V4 / AzMTDUSqG35a9yietMQp \ n2dpP / sHavhcepVFc2FWdUVC9kFJ4Ue / P7fEe / 9Y43XtQrBr4g07Qz6C33iwY + KNR \ nycbph0UCgYEAysmBM / TacOrsyZW1EN4M0DUzdI3WN16FOwqUGiCIPczbr8y9oWHa \ ntP1N / 5BJUW2CU1VEEtQyplNoO6i3MzfgPK4 + dSwFaOrtN3IlZ3mBLVLvGL3kA7P9 \ n1ZfTT + EPaGWJGA24wUxv7WcTDxDY3J8zgxK40NC2sXUr2COu + lu1rHsCgYEAzg / d \ nbYO0ckGi3Ty7zdX0BWPyQQtbU1XrQHytag + / EYYP28JaO4crEu4WHqLGxWuXjbka \ N / P2vahHwuQIPFCvHSx0lhMmdXTOUHfR6AXKWxyZ2 / 3DAwRFNJefbRshrAYdWhEuD \ nyOcdjNxRWyTbaxo64NwVh / FraaGUERzFFPur7Y0CgYEAkQlIAHoalfJgQtlxNEws \ NI + nREIa1dMqErbKmNH2aE + FmKrlb04XiX9pfo + 51keip8qIkWvcr9qvm ++ xygw5u \ nsdfJ0hIXGHAWE7bvK6 / KhTkwythdsYxVeyPovdPxKjCcufhucMoTr48uIXNiN4Eh \ n3ZhRWQA9 + nQcVK1I48UeDesCgYBoiqTKTdRhVx1qgqKBJjfb + D3yc / GMUP2 + RMKy \ nGXUFTe + DvZGLu + LFgtbkCg8wH4rPEwc3LPkuphVrtzixMhi06f + b47GblExj + IFF \ n1KPcO46Jv8l66e0q + vtLaOio6OGi0rD0XxSl3yzDQeqz5qXSaLXft0KYX6pAGEmA \ ngMJUDQKBgQDGmf8QZBmNfTm + jjWVGty + W1AwX4j5EkTDg9 / me05r1O + qsn3t7mLm \ nW7YqgqUh0OLF5z9q0uxIZjqqQMum9l9EuWELDh7lt2xFLeOu0T4S3BVLPTlUTyv1 \ n7UsSd2uEXUN / 249w6 / TtvpkOjWM1Dxyk6Q6bj9dhxE / A0pfYJxIVIw == \ n ----- END RSA私钥----- '公开:b'----- BEGIN PUBLIC KEY ----- \ nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAozqilJ6dw5l13MMZT3hF \ nfw5Xvo0B / TwHxyW7dlCsjuSvRBm3yLdaEfd5diZVaXnmzGuq5mRR1Mq9BvZ2BffU \ nTN4Oqre8jQSrupB5TfEkU61eFWInwz9RwZaR / LBH6WdCz9hJppx9sH6qK4Sql2qY \ nx0t + wk6QESPS5thWssiKhsqkXx + 69PJICO1ug2fdhv / Lwmm3dNDyP / pA0qn0eE6A \ nytrXTVcmBDE2oiksWs8G5Mt4nQGAjAp04c1M12ruBsLu5FHxwwr2QCq04kFM6Oqe \ n9nZSR7K5KZIrv + XkOPuBK9RhhSSnKN6mRw8RjL7xui + m45iPmLRI + zVuK6negube \ nvwIDAQAB \ n --- --END PUBLIC KEY ----- '签名:b'J9GtTPyRKNCj9yMhfWVehSWmM2wQPVSIPBXH4GmYaUsuPCem4EQHWLXhFAtz42jjdU4sHUVxkzRRu6OvJF4U6D4EeA2pW56dhD0FkbGbe59XHbPeaoWX + OOO + 1Lu6DQV3YRuNeajHPd8ldrmWvkawjecxrj + fZPurx1AC9aOQg1iAvXEuwcSW + 1A7LUiXnw / vELzDeHu3tDuU26QJ6ewrUXJZl39eVmV9gfijFGRC3Zy + uNiWciGgG54xDao2tCzP8LYxgiD6eIdKi5ZFrcMtw3bYK1yJsCIJ2fcLWKlgXfLDMcaHvwt2szQk65SwxErDnvdtLFBwZGIExNYta3m5Q =='
我使用openssl_verify尝试验证这一点,但失败了
$public_key_res = openssl_get_publickey("public");
$data = "123";
$signature = "signature";
//verify signature
$ok = openssl_verify($data, $signature, $public_key_res, OPENSSL_ALGO_SHA256);
if ($ok == 1) {
echo "valid";
} elseif ($ok == 0) {
echo "invalid";
} else {
echo "error: ".openssl_error_string();
}
?>
为什么失败了?在两个脚本中,我使用相同类型的加密SHA-256,我错过了什么?
解决:
$signature = base64_decode("...");
解决方案
暂无回答
php验签,在php中验证签名相关推荐
- 错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配
错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配 错误信息已经很明显了,就是说验签错误. 之前一度以为是自己的公钥私钥不对,一直在傻傻 ...
- 支付宝报错: invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:xxx
错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:xxx https://blog.csdn.net/weix ...
- 支付宝:验签出错,建议检查签名字符串或私钥与应用公钥是否匹配,网关生成的验签字符串为...
首先说明一下使用的后端语言为php.其它语言可以遇到该问题的话可以参考一下该思路. 先说一下所遇到的问题: 在对接阿里云的 alipay.trade.refund(统一收单交易退款接口)时,按照dem ...
- 支付宝:验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配
springboot项目,公钥证书方式,进行支付宝退款时,支付宝返回:"验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配".返回值里面,sub_code值是isv.inva ...
- 叙述无保密机制的rsa签名过程_安全系列之——RSA的公钥私钥有多少人能分的清楚?RSA的签名验签与加密解密如何使用公私钥?...
在对接很多的互联网公司的开发平台时,这些互联网公司未来自身平台的安全,都会需要调用方签名确认调用方的身份是合法的,同时未来信息网络传输的安全可能还需要加密解密.比如对接支付宝.微信开放平台时,需要配置 ...
- 密码机分类--签名验签服务器
商密产品认证-签名验签服务器 产品概述 签名验签服务器应用要点 产品概述 签名验签服务器是为应用实体提供基于PKI体系和数字证书的数字签名.验证签名等运算功能的服务器,可以保证关键业务信息的真实性.完 ...
- SM2加解密、签名验签
导论 SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,在我们国家商用密码体系中被用来替换RSA算法. 国产SM2算法,是基于ECC的,但二者在签名验签.加密解密过程中或许有些 ...
- 使用RSA、MD5对参数生成签名与验签
在日常的工作中,我们对外提供的接口或调用三方的接口往往有一步生成签名或验签的步骤,这个步骤主要是验证调用方是 不是合法的以及内容是否被修改.比如:对于某些网上公开下载的软件,视频,尤其是镜像文件.如果 ...
- RSA密钥生成、加密解密、数据签名验签
公钥.私钥生成 准备工作,基础的帮助类 使用java代码生成公钥私钥 使用openssl生成公钥私钥 加解密 数据签名及验签 数据加解密及签名验签测试 注意项 公钥.私钥生成 准备工作,基础的帮助类 ...
最新文章
- MAC OS 10.10.5虚拟机免费下载(可安装Xcode7)
- python函数名第一类方法、f-string格式化、迭代器及递归函数
- 郑州计算机单招学校有哪些专业,郑州单招的学校有哪些专业
- Ultraedit使用技巧收集
- 使用MJRefresh自定义下拉刷新,上拉加载动画
- 施一公:如何提高英文的科研写作能力
- linux实战清理挖矿病毒kthreaddi
- 代码提示(支持3.X和4.X)—ArcGIS API forJavaScript
- oracle select between and,oracle中的between和and的问题 | 学步园
- yum无法安装wget
- 2017-2018-1 20155314 20155323 实验二 固件程序设计
- Java学习第一周(2.20~2.24)
- 经验分布函数无偏性的证明和方差的推导
- 安卓动画开始,暂停和停止
- 还有哪些不错的正规Java培训机构
- 常用的webstore和vscode插件
- office 高效办公智慧树_智慧树知到《OFFICE高效办公》见面课答案
- NodeMCU入坑指南-低成本打造零舍友闻风丧胆WiFi断网神器
- 充电倍率、温度对电池特性的影响
- 如何开发“微信开发者工具”中的云开发功能