sstotenkopf
3.04.2014 - 02:32
Всем привет! Я являюсь новичком в работе с бд и у меня появилась проблема, данные вносятся в таблицу 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
3.04.2014 - 06:51
Цитата |
#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
3.04.2014 - 10:37
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
3.04.2014 - 14:26
Цитата |
#note: This function was added in MySQL 5.6.1. mysql> SELECT FROM_BASE64('YmFzZTY0IGVuY29kZWQgc3RyaW5n'); -> base64 encoded string
|
Спасибо, но как этим воспользоваться в моем выражении? Да это один параноик попросил, говорит без этого ему никак))
Игорь_Vasinsky
3.04.2014 - 14:36
весь акцент на фразу
Цитата |
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
3.04.2014 - 14:39
5.5.25
Игорь_Vasinsky
3.04.2014 - 14:44
и о чём это вам говорит?
_____________
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
3.04.2014 - 14:52
Пойду обновляться...) Спасибо))
Игорь_Vasinsky
3.04.2014 - 14:54
ну если нет желания - то и 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
3.04.2014 - 15:10
Я думал об этом, но сначала придется дергать записи, потом расшифровывать, при большом количестве данных, на мой взгляд, скорость будет стремиться к нулю
Игорь_Vasinsky
3.04.2014 - 15:20
а так если?
$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
3.04.2014 - 17:45
Цитата (Игорь_Vasinsky @ 3.04.2014 - 15:20) |
а так если?
$sql_search = mysqli_query($connect, "SELECT * FROM items WHERE AES_DECRYPT(`".base64_decode('name')."'`', 'SecretKey') LIKE '%$search%'"); |
Я не знал, что так можно... спасибо! попробую)))
sstotenkopf
15.04.2014 - 14:27
После обновления запрос к базе заработал, но возвращает пустой результат:
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
15.04.2014 - 15:23
извращенец xD
sstotenkopf
15.04.2014 - 20:55
Цитата (bestxp @ 15.04.2014 - 15:23) |
извращенец xD |
Почему?
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.