繁体   English   中英

如何验证 php 中的 react native lib 生成的 RSA 签名

[英]How to verify a RSA signature generated from react native lib in php

用于生物识别的反应本机库生成一个 base 64 签名,我想使用存储在数据库中的公钥 RSA 2048 作为纯文本(也由库生成)来验证该签名,以使用正确的公钥验证用户。 在 Topaco 的评论之后,我注意到公钥和签名作为单行字符串从库中返回,没有填充。

$publicKeyResource = openssl_pkey_get_public(("-----BEGIN PUBLIC KEY-----\n".$publicKey."\n-----END PUBLIC KEY-----"));
$verify = openssl_verify($message, base64_decode($signature), $publicKeyResource, "sha256withRSAEncryption" );

$verify 总是返回 0

格式化后的公钥示例:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyEQAmIthd0J7TdWGLt1X
Q3TdGhzoXVMiiENy9HDqlQKPImEwy4PEzJUr9JEZsWE4LarxsgkKnVZgiE+cNxSV
cE+zVBNaeb2hKxejrRVBpe9xgXb2agjrG7twuTKyBe+SeEIB1LRfwVHcKw7jSLle
ih4xhMHtZ6Q/crgzkBLH/EZ47stTv80EcFvreM7S+bfVfajE7qiuNHvPNaRtLEVh
iC4PTUqSfnuEb1xv3uC7mnIRNLTxfgbwUmzjjfnUlr+jxcWyb35JVCtgb3nsV/2H
G0TCSyNJ5X0tPfIDy7EfDjc9Mj9n+thPgTKCtbMXwPCQu7jLqI4AAubstJv3p3Uc
NQIDAQAB
-----END PUBLIC KEY-----

消息的签名示例:“auth”

mglZm2RKmkBIR+cNkuOJwAjnJJUAoyUl4w5NnzJsAFxuyvRhlJ3RS1Jksvzn90lp6lRG8aBy0nbxyCR2CpOjCH3G4XuUThTpJ862CPp5OMI9t9Ne6+/w2YiLj0Raq6WAiNDqxzg1PKRzojLvVpZd9P1URpevkoG6cQnk+FzITtESDmGaPtIgMV9ON2rrtF7Occ1PblFjSwCfkm3To3R4QdBgiVSdLIjoJvdff2RzId2dlGZxxiKyLs5JK6oFppmls/TcfMVvffj/fBFW9HjIggpHz8KmJTSb1crepK9WxrkKMvMs2Qsbd5nzf/SwiXDfFaBMKXJ30/2e3TqQ3CFXiQ==

我发现了一个关于同一个库的类似问题,但他们的解决方案与我使用的相同,但对我不起作用。

问题是我有一个我忘记的代码片段,称为 function,它在身份验证之前生成一个新的密钥对(当我检查设备是否支持生物识别时)所以我正在验证新生成的签名与保存在数据库中的旧密钥的密钥。 感谢@Topaco 和@President James K. Polk 确认签名和公钥之间的不一致

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM