public function getValue(PrivateKey $privateKey = null) { $value = $this->value; if (!$privateKey) { return $value; } $chunkSize = $privateKey->getKeySize() / 8; $chunkCount = intval(ceil(strlen($value) / $chunkSize)); $plainText = ''; for ($i = 0; $i < $chunkCount; $i++) { $chunkData = substr($value, $i * $chunkSize, $chunkSize); $plainText .= $privateKey->decrypt($chunkData); } if (empty($plainText)) { throw new \Exception(sprintf("Error decrypting text - OpenSSL Error string '%s'", openssl_error_string())); } return $plainText; }