PHP openssl不能加倍加密

时间:2016-08-25 09:01:50

标签: php encryption cryptography php-openssl

我尝试在两个域之间设置数据加密,因为我正在为身份验证数据构建API。

背景信息

After finally getting openssl to work(某种程度上)我正在测试加密和解密部分。

我尝试的第一部分成功运行。 首先将数据json_encoded为字符串格式。之后,我使用目标域的公钥加密它。 这导致字面上不可读的数据

kQrkkd6X6yZ+nxeeq7U/EOMwsDJjZrILmsGOWnwY7A3ULhI1hXQYwhiPlHBYmM4T0xmlVcNTAJDaT0ryv0G7Ee70V+FsdK/sSw3bOjd/46BnqQVyoPJvUcOZjK3xvNS5wfHPW3KD6Sup+INZzd46KOKmqk1DuDW6RJf5lMSjlD+/xLkjtMspYns7wOVvXVGEDIr+FH7XoEraKvntVa/YtgSgfj2r4IWTqF/rYoEYp+wEMU8+GC3/CfgDX1fOq1c+THDOCDGKypqxuVwD1We+NrX+YiUV2i+o5yxnE78XWluADs+adKhNDpFQnmjuSVMS+tuTB0fefCzO2BpehWXjo0+YV8aOc2B4qVyW1418G977qSXZEaCADviF1zH1agj+u5SsjZ4qHyIhZARpvmtCdiRB9f4XzhI6f8HD98qHmYAKwuEAyZNftzVpfRzHR+o6hrtLOcmQMQEu8PfjeW7PyUF8ka3RZa8QLZSpdCM2kjIqJ6BsF0Iomatc2QYbNF3OoGjelBfGOevIDu+q6ed1MpsGqdnj+6+XOVnxfEwFL85jWtGvTGvvnJPh9DADTmdbnElvR9BOXQja07qUML+STOcubo+Kbf1XHI/KZIBNNuVkV1yewhfsyl2zOD9SwYlhPUhMAJvC9lL0N+Gf6jAPTb3cIupyS8q5/faK7PkmrvY=

之后,我使用来自目标域的私钥解密内容。 一切正常。

主要内容

当我尝试双向加密时出现问题。我的意思是,我试图使用加密来保证数据来自它告诉它来自的域,它保证数据只能由接收域读取。

为此,我执行以下步骤

  1. Json_encode那个数据
  2. 使用发送域的私钥进行加密
  3. 使用目标域的公钥进行加密
  4. 使用目标域的私钥解密
  5. 使用发送域的公钥解密
  6. 然而,在第二次加密后,$encrypted在调试时似乎为空,之后$decrypted的明显计数相同(显而易见)。

    代码

    /**
     * @param $content
     * @param string $key
     * @return string
     */
    public function encryptWithPublic($content, $key = null)
    {
        if (is_null($key)) $key = $this->publicKey;
    
        openssl_public_encrypt($content, $result, $key);
        return base64_encode($result);
    }
    
    /**
     * @param $content
     * @param string $key
     * @return string
     */
    public function decryptWithPublic($content, $key = null)
    {
        if (is_null($key)) $key = $this->publicKey;
    
        openssl_public_decrypt(base64_decode($content), $result, $key);
        return $result;
    }
    
    /**
     * @param $content
     * @param string $key
     * @return string
     */
    public function encryptWithPrivate($content, $key = null)
    {
        if (is_null($key)) $key = $this->privateKey;
    
        openssl_private_encrypt($content, $result, $key);
        return base64_encode($result);
    }
    
    /**
     * @param $content
     * @param string $key
     * @return string
     */
    public function decryptWithPrivate($content, $key = null)
    {
        if (is_null($key)) $key = $this->privateKey;
    
        openssl_private_decrypt(base64_decode($content), $result, $key);
        return $result;
    }
    

0 个答案:

没有答案
相关问题