[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск в зашифрованной бд
sstotenkopf
Всем привет! Я являюсь новичком в работе с бд и у меня появилась проблема, данные вносятся в таблицу name в зашифрованном виде, шифруются они таким образом:

function fnEncrypt($sValue, $sSecretKey)
{
return rtrim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$sSecretKey, $sValue,
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND)
)
),
"\0"
);
}


В дальнейшем, мне нужно произвести поиск по этим данным, но я никак не могу найти пример подобного запроса, все, что я смог сделать это вот:


mysqli_query($connect, "SET block_encryption_mode = 'aes-256-ecb'");

$sql_search = mysqli_query($connect, "SELECT * FROM items WHERE AES_DECRYPT(FROM_BASE64(name), 'SecretKey') LIKE '%$search%'");



Выдает такую ошибку: FUNCTION board.FROM_BASE64 does not exist

Помогите пожалуйста составить правильный запрос...
Игорь_Vasinsky
Цитата
#note: This function was added in MySQL 5.6.1.
mysql> SELECT FROM_BASE64('YmFzZTY0IGVuY29kZWQgc3RyaW5n');
-> base64 encoded string


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
vagrand
sstotenkopf

Я стесняюсь спросить, а зачем нэймы то шифровать? да еще и при помощи mcrypt?

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
sstotenkopf
Цитата

#note: This function was added in MySQL 5.6.1.
mysql> SELECT FROM_BASE64('YmFzZTY0IGVuY29kZWQgc3RyaW5n');
-> base64 encoded string

Спасибо, но как этим воспользоваться в моем выражении? Да это один параноик попросил, говорит без этого ему никак))
Игорь_Vasinsky
весь акцент на фразу

Цитата
This function was added in MySQL 5.6.1.


какая версия мускула у вас?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sstotenkopf
5.5.25
Игорь_Vasinsky
и о чём это вам говорит?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sstotenkopf
Пойду обновляться...) Спасибо))
Игорь_Vasinsky
ну если нет желания - то и php нормально работает с BASE64

http://www.php.su/base64_encode()
http://www.php.su/functions/?base64-decode

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sstotenkopf
Цитата (Игорь_Vasinsky @ 3.04.2014 - 14:54)
ну если нет желания - то и php нормально работает с BASE64

http://www.php.su/base64_encode()
http://www.php.su/functions/?base64-decode

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

$sql_search = mysqli_query($connect, "SELECT * FROM items WHERE AES_DECRYPT(`".base64_decode('name')."'`', 'SecretKey') LIKE '%$search%'");


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sstotenkopf
Цитата (Игорь_Vasinsky @ 3.04.2014 - 15:20)
а так если?

$sql_search = mysqli_query($connect, "SELECT * FROM items WHERE AES_DECRYPT(`".base64_decode('name')."'`', 'SecretKey') LIKE '%$search%'");

Я не знал, что так можно... спасибо! попробую)))
sstotenkopf
После обновления запрос к базе заработал, но возвращает пустой результат:

mysqli_query($connect, "SET block_encryption_mode = 'aes-256-ecb'");

$sql_search = mysqli_query($connect, "SELECT * FROM items WHERE AES_DECRYPT(FROM_BASE64(name), 'SecretKey') LIKE '%$search%'");


Пробовал просто достать расшифрованные значения таким образом:


SET SESSION block_encryption_mode='aes-256-ecb';
SELECT AES_DECRYPT(FROM_BASE64('name'), 'SecretKey') FROM `items`


Возвращает строки но они "NULL"...
bestxp
извращенец xD
sstotenkopf
Цитата (bestxp @ 15.04.2014 - 15:23)
извращенец xD

Почему?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.