首页 > 解决方案 > openpgp-php 无法解密来自其他客户端的密文

问题描述

请参阅下面的源代码以重现此问题。步骤 1 使用gnupg加密消息,而步骤 2 使用openpgp-php解密来自步骤 1 的消息。要执行代码,请确保您安装了 PHP gnupg 和 openpgp-php。(参见singpolyma / openpgp-php)获取 openpgp-php 文档。

我想要实现的目标是 我有一个后端服务器和一个只能通过电子邮件进行通信的移动应用程序。为简单起见,假设步骤 1 是后端服务器,步骤 2 是移动客户端。消息在服务器和客户端之间来回流动。后端服务器应该能够加密用于移动应用程序的消息,该消息作为回报解密消息并向后端发送加密回复。

 <?php
    @include_once dirname(__FILE__).'/vendor/autoload.php';
    require_once dirname(__FILE__).'/lib/openpgp.php';
    require_once dirname(__FILE__).'/lib/openpgp_crypt_rsa.php';
    require_once dirname(__FILE__).'/lib/openpgp_crypt_symmetric.php';
    
    
    /**
     * Note: Step 1 and step 2 represents a client-server setup
     * I know it's wrong to share private keys but this was generated specifically for this test
     */
    
    /**
     * step #1 (Encryption)
     * encrypt message meant for hamfri-2@example.com at step #2 
     */
    
    // public key for hamfri-2@example.com
    $public_key1 = "-----BEGIN PGP PUBLIC KEY BLOCK-----
    
    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
    pko=
    =vTCt
    -----END PGP PUBLIC KEY BLOCK-----
    ";
    
    // private key for hamfri@example.com
    $private_key1 = "-----BEGIN PGP PRIVATE KEY BLOCK-----
    
    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
    hVub9BQ=
    =+jZf
    -----END PGP PRIVATE KEY BLOCK-----
    ";
    
    $message = "Testing again and again";
    $gpg = new gnupg();
    $publicKey = $gpg->import($public_key1);
    $fingerprint = $publicKey['fingerprint'];
    // catch errors
    $gpg->seterrormode(gnupg::ERROR_EXCEPTION);
    // enable armored output 
    $gpg->setarmor(1);
    $gpg -> setsignmode(gnupg::SIG_MODE_DETACH);
    
    // encrypt plain text
    try{
        $gpg->addencryptKey($fingerprint);
        $cipher_text = $gpg->encrypt($plain_text);
        echo "\n". $cipher_text ."\n";
    }
    catch(Exception $e){
        die('Error '.$e->getMessage());
    }
    
    /**
     * step #2 (Decryption)
     * decrypt message from hamfri@example.com in step 1
     */
    
    //public key for hamfri@example.com
    $publickey2 = "-----BEGIN PGP PUBLIC KEY BLOCK-----
    
    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
    =9rM9
    -----END PGP PUBLIC KEY BLOCK-----
    ";
    
    //private key for hamfri-2@example.com
    $privateKey2 = "-----BEGIN PGP PRIVATE KEY BLOCK-----
    
    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
    ZJIPOs18pko=
    =1CCf
    -----END PGP PRIVATE KEY BLOCK-----
    ";
    
    
    $encryptedPrivateKey=OpenPGP_Message::parse(OpenPGP::unarmor($privateKey2,'PGP PRIVATE KEY BLOCK'));
    
    // Try each secret key packet
    foreach($encryptedPrivateKey as $p) {
        if(!($p instanceof OpenPGP_SecretKeyPacket)) continue;
    
        $key2 = new OpenPGP_SecretKeyPacket($p->key);
    
        $msg = OpenPGP_Message::parse(OpenPGP::unarmor($cipher_text, 'PGP MESSAGE'));
    
        $decryptor = new OpenPGP_Crypt_RSA($key2);
        $decrypted = $decryptor->decrypt($msg);
        var_dump($decrypted);
    }

标签: phpgnupgopenpgp

解决方案


推荐阅读