Почему бы не связать текст с программой и использовать ее как глобальную переменную! Вот пример. Я рассматриваю возможность использования этого для включения файлов шейдера Open GL в исполняемый файл, поскольку GL-шейдеры должны быть скомпилированы для GPU во время выполнения.
Без обид, но вопрос немного "дезинформирован". Нет никакого решения "для серебряной пули". Я рекомендовал бы читать на криптографии в целом и затем сделать некоторое моделирование угроз. Некоторые вопросы (ни в коем случае всесторонний список) необходимо спросить себя:
Более позднее редактирование: обратите внимание, что стандартные алгоритмы шифрования от той же категории (например, 3DES и AES - оба являющийся симметричными шифрами блока) имеют сопоставимую силу. Большинство (коммерческих) систем не повреждается, потому что кто-то bruteforced их шифрование, но потому что их моделирование угроз не было детализировано достаточно (или утончаются, у них не было никого). Например, можно зашифровать все данные, но если у Вас, окажется, будет общедоступный веб-интерфейс, который уязвим для Внедрения SQL, то они не помогут Вам очень.
Это это не имеет значения.
Полные номера карты никогда не должны касаться диска.
Все, что имеет значение, является подлинным кодом.
Для трассировок и т.д. Вы будете только использовать последние 4 цифры xxxx xxxx xxxx 1234 и истекать дата.
Если Вы будете к числам магазинной карточки, то выбор криптографии получит мандат банком получения.
Если Вы не получатель, который случай, там должен быть старый Unix-программист/db2 парень, которого необходимо спросить.
"Не можете Вы хранить его локально в клиенте в cookie" <-НИКОГДА
Я добавил бы к представлению, что Вы просто не должны хранить их, если у Вас нет действительно действительно серьезного основания к, и хранение их в cookie является действительно плохой идеей - они просто слишком легки для овладения (что происходит, если кто-то украдет cookie то - затем не будет иметь значения, насколько зашифрованный это).
Если необходимо сделать повторные платежи, большинство поставщиков CC предложит способ сделать это путем хранения некоторого маркера от начальной оплаты, не сохраняя номер карты вообще (Вы могли просто сохранить последние 4 цифры для отображения клиенту так, чтобы они знали, какая карта хранится).
Действительно, просто не делайте этого!
Также Вы никогда никогда никогда не должны сохранять код CCV.
Согласно PCI правила соответствия DSS, любой ведущий в отрасли стандарт шифрования достаточно. Так 3DES с ключом на 256 битов достаточно хорошо (хотя другие стандарты могут использоваться). Проверьте это http://pcianswers.com/2006/08/09/methods-of-encrypting-data/
При использовании стороннего платежного шлюза Вы не должны хранить числа.
Нет никакого смысла.
3des довольно хорошо, сохраните соль вдоль стороны и сохраните стандартный ключ где-нибудь не в базе данных или файле конфигурации. Тот путь, если Вы получаете pwned, они не могут дешифровать его.
Не забывайте о целостности здесь. Существуют нападения подделки на out-of-the-box crypto, когда взломщик не знает ключ, но может управлять шифрованным текстом. Они могут быть особенно противными когда:
Это точно имеет место для кредитных карт. Так использование Системы. Безопасность. AES криптографии или 3DES в режиме CBC, не прокручивая Вашу собственную контрольную сумму может быть опасной. Читайте: существует, немного случаются, взломщик без секретного ключа мог заменить один номер кредитной карты другим.
Существует также легальный аспект для рассмотрения. Я не знаю ситуации в другом месте, но в Германии Вам просто не разрешают сохранить кредитную карту numbers1). Период. Не имеет значения, шифруете ли Вы их или не и в том, какой формат Вы храните их.
Все, что можно сделать (и здесь я отношусь из памяти без судебного ведома) действительно ли хранилище является сильным хешем (SHA-256?) номера кредитной карты, наряду с последними четырьмя цифрами и номером аккаунта. И да, это тривиально для восстановления полного числа от них одна только информация. Законы не всегда логичны.
1) Кроме того, если Вы - федерально сертифицированный институт кредитной карты.
Подсказка: необходимо заняться расследованиями, если законно сохранить номера кредитных карт. В Швеции, например, Вы должны будете быть сертифицированы PCI (Промышленность Платежной карты), где Ваша внутренняя и внешняя безопасность будет протестирована (длинное с большим количеством других вещей).
Необходимо думать оба несколько раз прежде, чем сохранить данные кредитной карты, начиная с судебных издержек выполнения, это неправильно могло бы быть дорого.