Заполните таблицу 5000 или более строк.
mysql> create table n ( n smallint unsigned auto_increment primary key);
mysql> insert into n (n) select null;
mysql> insert into n (n) select null from n;
... repeat doubling the rows in the table until you have more than 5000 rows ...
Установите переменную сеанса в вашей исходной строке.
mysql> set @value = '20191018143572123034102012221314181237774212';
Установите переменную в ха sh самой себя для каждой строки в наборе из 5000 строк.
mysql> select @value := sha2(@value, 512) from n limit 5000;
Последняя строка этого запроса будет результатом хеширования 5000 раз. Вы также можете запросить текущее значение переменной:
mysql> select @value;
+----------------------------------------------------------------------------------------------------------------------------------+
| @value |
+----------------------------------------------------------------------------------------------------------------------------------+
| f8b915776eab735fdd10266b2e66068447904852b82c30eeb6de30703a087eb17ea4c4a37630494607194ddb9354c1211bd984fb5f4d9cff95f5a24ed52065e7 |
+----------------------------------------------------------------------------------------------------------------------------------+
Честно говоря, это легче практически на любом другом языке программирования, кроме SQL.
Вы должны просто использовать al oop.
Возможно, вы захотите использовать другой метод хеширования, который использует растяжение ключа вместо того, чтобы полагаться на 5000 повторений SHA2. Как правило, повторное повторное хеширование выполняется много раз, чтобы вычисление занимало больше времени, чтобы злоумышленники были менее привлекательны для попыток автоматического определения паролей.
Вы также можете просто использовать SELECT SLEEP(1)
или эквивалентную функцию в своем приложении, если хотите добавить небольшую задержку.