часов назад я разместил это: Является ли хранение секретного ключа в виде открытого текста в SQL плохим ходом?
Я считаю, что мой вопрос и резюме не были достаточно ясны. Я имел в виду секретный ключ для OTP на основе времени, а не обычный пароль. Да, у меня есть password_hash() для пароля, но не для секретного ключа. Сгенерированный секретный ключ может использоваться Authy или Google Authenticator для отображения текущего OTP каждые 30 секунд. Если вы, ребята, не говорите мне также хэшировать мой секретный ключ, я не понимаю, почему мой вопрос был дубликатом.
Что касается комментария Дата, я не вижу, как мне поможет otplib (библиотека javascript), поскольку мне все еще нужен другой случайный ключ для привязки к разным отдельным учетным записям, если только я не использую один и тот же ключ для все учетные записи. Кроме того, мне нужен способ отметить, какие ключи связаны с какой учетной записью, поэтому я возвращаюсь к моему основному вопросу о том, как безопасно хранить ключи, чтобы всякий раз, когда учетная запись пытается войти в систему с OTP, я мог проверить это.
Приношу извинения за беспокойство и заранее благодарю.
Я следовал этому руководству: youtube.com/watch?v=t49zjBGD75U с некоторыми небольшими поправками. Кроме того, я храню не OTP, а секретный ключ. Секретный ключ будет показывать 6-значный OTP каждые 30 секунд, когда секретный ключ добавляется в аутентификатор Google или Authy.






Я понимаю вашу проблему. Следуя инструкции otplib, я думаю, это то, что вам нужно хранить
import crypto from 'crypto';
authenticator.options = { crypto };
// Or if you're using the other OTP methods
// hotp.options = { crypto }
// totp.options = { crypto }
const secret = 'KVKFKRCPNZQUYMLXOVYDSQKJKZDTSRLD' <--- This is what you need to store, right ?
const token = authenticator.generate(secret); // 556443
Обычно этот ключ секрет генерируется из вашего идентификатора пользователя + YOUR_PRIVATE_SECRET_KEY.
YOUR_PRIVATE_SECRET_KEY — это ввод ключа в серверную среду.
Я не знаю вашего рабочего процесса аутентификации, но почему вашему PHP-приложению вообще нужно хранить OTP? Обычно это будет генерироваться на стороне сервера и просто возвращаться вызывающей стороне. Не было бы необходимости его хранить.