Двустороннее шифрование + поиск? - PullRequest
0 голосов
/ 08 декабря 2011

Если я не хочу хранить электронные письма пользователей в виде обычного текста в базе данных, но нуждаюсь в них для запуска поиска, есть ли способ как зашифровать (двухсторонний, чтобы контент можно было извлечь), так и легко просматриватьвверх значение?

РЕДАКТИРОВАТЬ Будет ли хранить два столбца, один зашифрованный для отображения и один хэшированный для поиска?

Ответы [ 2 ]

4 голосов
/ 08 декабря 2011

MySQL имеет aes_encrypt() и aes_decrypt() для такого рода вещей, но затем вы все равно передаете ключ шифрования в открытом виде, что означает, что вы можетеа также просто раздайте адреса электронной почты в открытом виде.

Основной метод будет выглядеть примерно так:

SELECT ...
FROM yourtable
WHERE encrypted_email = AES_ENCRYPT('someone@example.com', 'crypt key here');

, но опять же, вы не получите никакой безопасности, посколькуВы отправляете ключ каждый раз.

0 голосов
/ 08 декабря 2011

Это зависит от того, как вы шифруете свои данные. Вы делаете шифрование в коде и затем вставляете зашифрованные значения? Если это так, то вы можете искать значения, просто просматривая зашифрованное значение вместо открытого текста.

псевдокод:

string encryptedEmail = Encrypt("test@test.com", myEncryptionKey);
....
string sInsert = "INSERT INTO table (email) VALUES ('" + encryptedEmail + "')";
...
string sSelect = "SELECT * FROM table WHERE email = '" + encryptedEmail + "'";

Теперь вы только когда-либо передаете зашифрованную информацию по сети, ключ никогда никуда не отправляется.

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