我尝试在两个域之间设置数据加密,因为我正在为身份验证数据构建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=
之后,我使用来自目标域的私钥解密内容。 一切正常。
主要内容
当我尝试双向加密时出现问题。我的意思是,我试图使用加密来保证数据来自它告诉它来自的域,它保证数据只能由接收域读取。
为此,我执行以下步骤
然而,在第二次加密后,$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;
}