/** * 用公钥解密私钥加密内容 * * @param string $data 要解密的数据 * * @return string 解密后的字符串 */ public function decodePrivateEncode($data) { $data = str_replace(array_values($this->aReplace), array_keys($this->aReplace), $data); $data = json_decode(base64_decode($data)); $result = ''; if (is_array($data) && count($data) > 0) { foreach ($data as $tmp) { openssl_public_decrypt(base64_decode($tmp), $decrypted, $this->oRSAProcess->getPubKeyId()); $result .= $decrypted; unset($tmp); } } unset($data); if (strlen($result) > 0) { return base64_decode($result); } return NULL; }
/** * 公钥加密 * * @param string $data 要加密的数据 * * @return string 加密后的字符串 */ public function publicKeyEncode($data) { $aEncrypted = array(); $data = base64_encode($data); $len = strlen($data); for ($i = 0; $i < $len; $i += 50) { $tmp = substr($data, $i, 50); openssl_public_encrypt($tmp, $encrypted, $this->oRSAProcess->getPubKeyId()); $aEncrypted[] = base64_encode($encrypted); unset($tmp); unset($encrypted); } unset($data); if (count($aEncrypted) > 0) { $enCodeData = base64_encode(json_encode($aEncrypted)); $enCodeData = str_replace(array_keys($this->aReplace), array_values($this->aReplace), $enCodeData); unset($aEncrypted); return $enCodeData; } return NULL; }