Я ищу способ зашифровать данные по пути в базу данных MySQL и расшифровать их при выходе.Кроме того, я хотел бы иметь возможность выполнять обычные SQL-запросы к этим полям, такие как поиск и сравнение, что не позволяет мне использовать чистое решение PHP.
Это приводит меня к AES_ENCRYPT () и AES_DECRYPT (), который может быть продублирован в PHP с помощью MCRYPT.
У меня проблемы с AES_DECRYPT, и я попробовал все предложения, которые можно найти при поиске в Интернете.
Вот моя таблица:
CREATE TABLE IF NOT EXISTS `test_table` (
`id` int(6) NOT NULL,
`secure_info` text NOT NULL,
`encrypted_blob` blob NOT NULL,
`encrypted` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Я выполняю следующие запросы:
INSERT INTO test_table (id, secure_info) VALUES (1,'Testing');
UPDATE test_table SET encrypted = AES_ENCRYPT(secure_info,'key') WHERE id=1 LIMIT 1;
UPDATE test_table SET encrypted_blob = AES_ENCRYPT(secure_info,'key') WHERE id=1 LIMIT 1;
SELECT *, AES_DECRYPT(encrypted,'key') as decrypted, AES_DECRYPT(encrypted_blob,'key') as decrypted_blob FROM test_table WHERE id=1;
Я не могу получить исходное значение.'decrypted' возвращает NULL, а 'decrypted_blob' возвращает 54657374696e67
Есть идеи или, возможно, лучшее решение?