почему эти 2 строки идентичны для bcrypt?

#javascript #bcrypt

#javascript #bcrypt

Вопрос:

refreshToken это строка, которая проверяется, соответствует ли она кодировке.

currentHashedRefreshToken в настоящее время является закодированным токеном.

isRefreshTokenMatching это логическая переменная, которая сравнивает, соответствует ли закодированная строка bcrypt.

 {
  refreshToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1dWlkIjoiOWRiMTcwMmMtNDkyYy00MTJmLTkyM2QtM2Y5MWQyYzk0NTNjIiwicm9sZSI6IkNVU1RPTUVSX1JPTEUiLCJpYXQiOjE2MDU0NzM4NTcsImV4cCI6MTYwNTQ3NzQ1N30.o9nEeH4V7PZ61jWRG7-7epH79Vi9HJQWorvx5A37q4o'
}
{
  currentHashedRefreshToken: '$2b$10$ZYsrh1xu3icprkvRI0OksuBx6hrfOs9lmO7oZ2qqM6pFCLDiVaQrq'
}
{ isRefreshTokenMatching: true }
  

второй:

 {
  refreshToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1dWlkIjoiOWRiMTcwMmMtNDkyYy00MTJmLTkyM2QtM2Y5MWQyYzk0NTNjIiwicm9sZSI6IkNVU1RPTUVSX1JPTEUiLCJpYXQiOjE2MDU0NzUzOTgsImV4cCI6MTYwNTQ3ODk5OH0.iHRhFmtgRbsgTv9uC7VDaT_bU1tHxdlCjHDCjfmxeKA'
}
{
  currentHashedRefreshToken: '$2b$10$ZYsrh1xu3icprkvRI0OksuBx6hrfOs9lmO7oZ2qqM6pFCLDiVaQrq'
}
{ isRefreshTokenMatching: true }
  

почему оба токена обновления обнаруживают, что они совпадают, если они разные и разные?

Вот мои методы хеширования и декодирования:

   /**
   * generate hash from password or string
   * @param {string} password
   * @returns {Promise<string>}
   */
  static async generateHash(password: string): Promise<string> {
    return bcrypt.hash(password, 10);
  }

  /**
   * validate text with hash
   * @param {string} password
   * @param {string} hash
   * @returns {Promise<boolean>}
   */
  static async validateHash(password: string, hash?: string): Promise<boolean> {
    return bcrypt.compare(password, hash || '');
  }
  

Комментарии:

1. опубликованный вами код ничего не делает с указанными вами данными, которые предположительно связаны с ним. можете ли вы опубликовать более полный пример того, что вы пытаетесь сделать здесь?

2. currentHashedRefreshToken используется ли хэшированный пароль при создании refreshToken — конечно, они будут одинаковыми, а токены будут разными, поскольку они имеют разное время выпуска и истечения срока действия

3. @JaromandaX итак, у меня есть два разных refreshToken и один currentHashedRefreshToken — так это нормально, что две другие строки имеют одинаковое значение для bcrypt?

4. ни один из показанных вами кодов не имеет никакого отношения к refreshToken … кроме того факта, что на самом currentHashedRefreshToken деле (я предполагаю, поскольку я не могу его расшифровать) хэшированный пароль, используемый для создания refreshToken — значение refreshToken не имеет ничего общего с isRefreshTokenMatching на основе кода, который вы показали — опять же, вы будетенужно показать, как isRefreshTokenMatching вычисляется, если вам нужна дополнительная информация

5. Кроме того, это похоже на TypeScript, а не на JavaScript, хотя я не думаю, что разница имеет отношение к вопросу.