php使用openssl进行Rsa长数据加密,解密保存问题

原来代码:

    public function encrypt($data) {  
        if (openssl_public_encrypt(base64_encode($data), $encrypted, $this->pubkey))  
            $data = base64_encode($encrypted);  
        else  
            throw new Exception('Unable to encrypt data. Perhaps it is bigger than the key size?');  
  
        return $data;  
    }  
  
    public function decrypt($data) {  
        if (openssl_private_decrypt(base64_decode($data), $decrypted, $this->privkey))  
            $data = $decrypted;  
        else  
            $data = '';  
  
        return $data;  
    }

 修改分段以后:

    public function encrypt($originalData){
        $crypto = '';
        foreach (str_split($originalData, 117) as $chunk) {
            openssl_public_encrypt($chunk, $encryptData, $this->pubkey);
            $crypto .= $encryptData;
        }
        return base64_encode($crypto);
    }

    public function decrypt($encryptData){
        $crypto = '';
        foreach (str_split(base64_decode($encryptData), 128) as $chunk) {
            openssl_private_decrypt($chunk, $decryptData, $this->privkey);
            $crypto .= $decryptData;
        }
        return $crypto;
    }
原文地址:https://www.cnblogs.com/zhja/p/5833986.html