【问题标题】:PHP RSA Signature Variable Not VerifyingPHP RSA 签名变量未验证
【发布时间】:2018-02-19 20:19:00
【问题描述】:

我有两个功能。一个函数为某些数据生成签名。另一个函数验证数据的签名。我面临的问题是验证不返回true。我正在使用 phpseclib 库http://phpseclib.sourceforge.net/rsa/2.0/examples.html

    public function generate(){
    $rsa = new RSA();
    /*$rsa->setPublicKeyFormat(RSA::PRIVATE_FORMAT_PKCS1);
    extract($rsa->createKey());
    return "$publickey\r\n\r\n$privatekey";*/

    $rsa->loadKey(base64_decode(env('RSA_PRIVATE_KEY')));

    $data = 'hello';

    $rsa->setSignatureMode(RSA::SIGNATURE_PKCS1);
    $signature = $rsa->sign($data);

    return base64_encode($signature);

}

public function verify(Request $request){
    $rsa = new RSA();

    $data = 'hello';

    $signature = 'HTwI8TU9tIGBSUOWxCI95oILWxdnY9K9rizZbusQMM5+vlD4IiFuU5YghWnRTO+zB4GKUxhOcEaf127X5Hs7m4M76etol7dxxxkFw8097OWuU+bh2YskFB2GLWjzRdamg7RyWYznlePyBlPH8QeBHiRMvHHivabGOmNTkgsF09E=';

    $rsa->loadKey(base64_decode(env('RSA_PUBLIC_KEY'))); // public key
    return $rsa->verify($data, base64_decode($signature)) ? 'verified' : 'unverified';

}

如果我像这样将两个函数组合成一个函数,它就可以正常工作。

    $rsa = new RSA();
    /*$rsa->setPublicKeyFormat(RSA::PRIVATE_FORMAT_PKCS1);
    extract($rsa->createKey());
    return "$publickey\r\n\r\n$privatekey";*/

    $rsa->loadKey(base64_decode(env('RSA_PRIVATE_KEY')));

    $data = 'hello';

    $rsa->setSignatureMode(RSA::SIGNATURE_PKCS1);
    $signature = $rsa->sign($data);

    $signature = base64_encode($signature);

    $rsa->loadKey(base64_decode(env('RSA_PUBLIC_KEY'))); // public key
        return $rsa->verify($data, base64_decode($signature)) ? 'verified' : 'unverified';

我不明白。我测试了很多方法,签名是一样的,但没有验证。我正在尝试在一个 API 端点上签名并在另一个端点上进行验证。

【问题讨论】:

    标签: php base64 rsa signature phpseclib


    【解决方案1】:

    在您的 verify 函数中,您没有这样做:

    $rsa->setSignatureMode(RSA::SIGNATURE_PKCS1);
    

    您在 generate 函数中执行此操作,但不是在您的 verify 函数中。

    在您的组合函数中,使用了相同的签名模式,因为使用了相同的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多