paymentResource = $paymentResource; $this->encryptor = $encryptor; } /** * Fetch encrypted credit card numbers using legacy ciphers and re-encrypt with latest cipher * @throws \Magento\Framework\Exception\LocalizedException */ public function reEncryptCreditCardNumbers() { $connection = $this->paymentResource->getConnection(); $table = $this->paymentResource->getMainTable(); $select = $connection->select()->from($table, ['entity_id', 'cc_number_enc']) ->where( 'cc_number_enc REGEXP ?', sprintf(self::LEGACY_PATTERN, \Magento\Framework\Encryption\Encryptor::CIPHER_LATEST) )->limit(1000); while ($attributeValues = $connection->fetchPairs($select)) { // save new values foreach ($attributeValues as $valueId => $value) { $connection->update( $table, ['cc_number_enc' => $this->encryptor->encrypt($this->encryptor->decrypt($value))], ['entity_id = ?' => (int)$valueId, 'cc_number_enc = ?' => (string)$value] ); } } } }