Лучше всего использовать асимметричное шифрование. Создайте пару открытых и закрытых ключей RSA. Поместите закрытый ключ в безопасное место. Поместите открытый ключ на ваш веб-сервер. Когда клиенты хотят предоставить данные своей кредитной карты, нажмите на них открытый ключ. Зашифруйте данные с помощью открытого ключа на этой стороне клиента. В OpenSSL посмотрите процедуры Envelope (EVP _ **).
Таким образом, единственный способ восстановить данные кредитной карты в незашифрованном виде - это расшифровка с использованием очень безопасного, никогда не размещаемого в Интернете, никогда не видимого личного ключа компьютера, подключенного к Интернету.
Вы можете создать довольно простое автономное приложение, которое делает это, опять же с OpenSSL.
Учитывая небольшой объем данных, которые вы хотите зашифровать, я думаю, что это довольно практичное решение.
Более эффективное, но более сложное решение состоит в том, чтобы AES зашифровывал данные на стороне клиента, сгенерированной ключом. Затем зашифруйте этот ключ AES, как указано выше (замените кредитную карту на ключ AES в моем решении выше).