Как реализовать двухстороннее шифрование с помощью PHP или mySQL? - PullRequest
4 голосов
/ 07 апреля 2011

Я пытаюсь безопасно хранить токены и ключи OAuth, и я знаю, что лучше всего зашифровать их и обращаться с ними как с паролями пользователей. Как я могу сделать это, все еще имея возможность дешифровать их и использовать их для выполнения API-вызовов, скажем, в твиттере (я просто хэширую свои пароли, которые не будут работать для ключей OAuth, поскольку хеширование - это 1 способ)?

Я открыт для того, чтобы делать это либо в mySQL, либо в PHP, поэтому я был бы признателен за примеры либо за, либо за / против каждого подхода.

1 Ответ

3 голосов
/ 07 апреля 2011

Вы можете использовать библиотеку mcrypt в PHP (http://php.net/manual/en/book.mcrypt.php),, она поддерживает все основные криптографические алгоритмы. Я предлагаю вам использовать AES-128, это своего рода отраслевой стандарт. Просто убедитесь, что вы храните свой ключв безопасном месте. Затем вы можете зашифровать свои данные, преобразовать их в base64 и сохранить их в своей базе данных. Всякий раз, когда вам нужно использовать данные, просто извлечь их из базы данных и применить обратные операции.

IЯ не знаю, как именно работает MySQL. Может быть, есть возможность хранить данные в зашифрованном виде и хранить их где-нибудь в безопасном для вас ключе?

С точки зрения безопасности, метод PHP был бы лучше, хотяПоскольку данные, поступающие в вашу базу данных и поступающие из нее, все еще зашифрованы.

Пожалуйста, не используйте шифр XOR, в лучшем случае это смешно. Одна пара утечек простого шифротекста покажет ваш полный ключ (plaintext XOR ciphertext = key). Это обеспечивает идеальную защиту только при использовании в качестве одноразового планшета . Конечно, вы не можете использовать это,потому что теперь вы должны использовать разные ключи для каждого фрагмента данных и так или иначе должны безопасно хранить все эти одноразовые планшеты.Может быть, вы могли бы использовать какое-то шифрование для этого;) ...?(вставьте бесконечный цикл здесь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...