2016-11-22 4 views
1

Я занимаюсь созданием таблицы хэшей паролей в MySQL с помощью phpMyAdmin. SQL код, который я пытаюсь ввести это:MySQL PhpMyAdmin - нераспознанное ключевое слово CONCAT

Edit: используя новый код, я использую:.

INSERT INTO `user` (`username`, `salt`, `passwordhash`) 
VALUES ('username', 'a1b2c3d4e5f6g', SHA2(CONCAT('password', 'a1b2c3d4e5f6g'), 256))); 

После УВХ2, все это ошибка, с первым, говоря «Непризнанные слова (около CONCAT). " Остальные все говорят «Unrecognized Token», а затем любую строку, поэтому, похоже, все эти проблемы вызваны только CONCAT. Есть ли другой способ конкатенации строк?

Screen shot of the current code and errors

+0

*** Вы не должны использовать [хэши паролей SHA1] (https://konklone.com/post/why-google-is-hurrying-the-web-to-kill-sha-1) *** или *** [хэши паролей MD5] (http://security.stackexchange.com/questions/19906/is-md5-considered-insecure) ***, и вы действительно должны использовать встроенные функции PHP (http: //jayblanchard.net/proper_password_hashing_with_PHP.html) для защиты паролей. Удостоверьтесь, что вы [не избегаете паролей] (http://stackoverflow.com/q/36628418/1011527) или используйте любой другой механизм очистки для них перед хэшированием. Выполнение этого * изменяет * пароль и вызывает ненужное дополнительное кодирование. –

+0

Какие версии phpMyAdmin и MySQL вы используете? Как только я исправлю дополнительную закрывающую скобку, это отлично работает для меня, используя текущую версию phpMyAdmin (4.6.5.2). –

+0

Кроме того, вы можете использовать вкладку «Вставка», в которой есть раскрывающиеся функции MySQL, которые могут быть вам полезны. –

ответ

2

Вы должны иметь

Ошибка в запросе (1582): Неверный подсчет параметров в вызове родной функции 'SHA2'

Таким образом, она работает для меня

CREATE TABLE `user` (
    `username` varchar(255) NOT NULL, 
    `salt` varchar(255) NOT NULL, 
    `passwordhash` varchar(255) NOT NULL 
) ENGINE='InnoDB' COLLATE 'utf16_bin'; 

INSERT INTO `user` (`username`, `salt`, `passwordhash`) 
VALUES ('username', 'a1b2c3d4e5f6g', SHA2('test',CONCAT('password', 'a1b2c3d4e5f6g'))); 

SELECT * FROM user; 


username salt passwordhash 
username a1b2c3d4e5f6g 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 
username a1b2c3d4e5f6g 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 
+0

Спасибо за помощь. Это действительно похоже на проблему с CONCAT или что-то в этом роде. В нем указано нераспознанное ключевое слово, и все, что ниже этого, является ошибкой. Он также говорит что-то о закрывающей скобке в позиции 99? (См. Скриншот). Я пробовал каждую синтаксическую комбинацию всех предложений в этом потоке, но ничего не работало:/ –

1

согласно документации MySQL:

SHA2(str, hash_length)

Вычисляет семейство SHA-2 хэш-функций (SHA-224, SHA-256, SHA-384 и SHA-512). Первый аргумент - это строка открытого текста, которая будет хеширована. Второй аргумент указывает желаемую длину бита результата, который должен иметь значение 224, 256, 384, 512 или 0 (что эквивалентно 256). Если любой аргумент равен NULL или длина хеша не является одним из допустимых значений, возвращаемое значение равно NULL. В противном случае результатом функции является хеш-значение, содержащее требуемое количество бит. См ноты в начале этого раздела о хранении хэш-значения эффективно

Вы должны обеспечить второй параметр функции SHA2() (длина хэш) и этот аргумент должен быть одним из значений 224, 256, 384 , 512 или 0.

INSERT INTO `user` (`username`, `salt`, `passwordhash`) VALUES ('username', 'a1b2c3d4e5f6g', SHA2(CONCAT('password', 'a1b2c3d4e5f6g'),256)); 
+1

[Разве я уже не говорил это?] (Http://stackoverflow.com/questions/40744586/mysql-phpmyadmin-unrecognized -keyword-concat? noredirect = 1 # comment68715136_40744586) –

+0

да, вы сделали, ну и что? – n00dl3

+0

* «Да, ты сделал, ну и что?» * Почему ты так сопливаешься об этом? ОП сказал мне, что это не имело никакого значения. Я надеюсь, что это укусит вас, это, если вы хотите вернуться. –

3

в соответствии с вашим новым кодом: у вас есть дополнительный кронштейн, снова в , 256)));.

Здесь:

INSERT INTO `user` (`username`, `salt`, `passwordhash`) 
VALUES ('username', 'a1b2c3d4e5f6g', SHA2(CONCAT('password', 'a1b2c3d4e5f6g'), 256)); 

Это и со всеми комментариями я оставил там.


Edit: Далее, согласно происходит через руководство MySQL на SHA2() может быть связан вопрос.

По https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html#function_sha2

Эта функция работает только, если MySQL сконфигурирован с поддержкой SSL. См. Section 6.4, “Using Secure Connections”. SHA2() можно считать криптографически более безопасным, чем MD5() или SHA1(). SHA2() был добавлен в MySQL 5.5.5.

Итак, убедитесь, что используемая вами версия MySQL соответствует ей или выше этого. Если он ниже 5.5.5, то SHA2() недоступен для вас. Это или может быть проблемой sysadmin/security на сервере.

Обратитесь к sysadmin в вашей школе, если это то, от чего вы это делаете, поскольку, как видно из того, что вы сказали в комментариях, - «Я следую школьному учебному пособию, в котором говорится, что он использует SHA2». В любом случае, здесь важна версия MySQL.

Чтобы проверить версию MySQL установлен, используйте следующий синтаксис в PHPMyAdmin:

ВЫСТАВКАХ переменных типа "% версии%";

Вместо того, что вы использовали, было SELECT VERSION();.

+0

Это буквально не причина. Я ценю вашу помощь, но я скопировал и вложил разные ответы на все, и попытался выполнить любое случайное исправление, которое могло бы помочь.Вы много сделали для меня и, очевидно, гораздо более узнаваемы, но, пожалуйста, прекратите говорить мне, чтобы я принял ваши ответы, когда он не сработал. Я могу честно понять, чувствуете ли вы, что это пустая трата времени, потому что это, скорее всего, будет проблемой кеша (как вы сказали выше). Я собираюсь попробовать снова выполнить регистрацию. Несмотря на все искренность, я ценю ваше время. –

+0

@NicholasHassan Я отредактировал свой комментарий для этого, и вы правы в этом. –

+0

@NicholasHassan Я не против тратить время на помощь. Мне просто довольно странно, почему ваш phpmyadmin ведет себя так странно. Удостоверьтесь, что ваши типы столбцов и длины верны. –

Смежные вопросы