sha1 to brcrypt ruby ​​на рельсах - PullRequest
0 голосов
/ 28 июня 2018

У меня есть 4-значный атрибут секретного кода, который я шифрую с помощью sha1 на данный момент. Поскольку это не очень безопасно, я бы хотел перейти на использование bcrypt.

Чтобы преобразовать хэш sha1 в bcrypt, я написал следующее рейк-задание

namespace :user do
  desc "convert all secret codes encryption from sha1 to bcrypt"

  @rainbow_table = {}

  task secret_code: :environment do
    User.all.each do |user|
      clean_secret_code = @rainbow_table[user.secret_code]
      bcrypted_secret_code = BCrypt::Password.create(clean_secret_code)
      user.update_attributes secret_code: bcrypted_secret_code
      p user.valid_secret_code? clean_secret_code.to_s
    end
  end

  def create_rainbow_table
    ("0000".."9999").each do |i|
      @rainbow_table.merge!(Digest::SHA1.hexdigest(i.to_s) => i.to_s)
    end
  end
end

так что это работает нормально, но когда я запускаю приложение ruby ​​on rails, я делаю:

BCrypt::Password.new(secret_code) == code.to_s

возвращаем false code является секретным кодом, который хэшируется, а secret_code является зашифрованной версией

Любая помощь будет принята с благодарностью

спасибо

1 Ответ

0 голосов
/ 28 июня 2018

хорошо, мой плохой.

На самом деле это работает нормально, просто я выполнял обратный вызов на update_attributes secret_code, который снова шифровал хэш. Я сейчас использую `Updat

...