当secret_key_base为nil时,手动解密Rails 5会话吗?

时间:2018-07-01 05:05:35

标签: ruby-on-rails ruby ruby-on-rails-5 activesupport

我正在关注其他几个SO线程,以了解如何手动解密会话字符串...

n//2

问题是,在Rails 5.2中cookie = CGI::unescape(params[:session]) salt = Rails.application.config.action_dispatch.encrypted_cookie_salt signed_salt = Rails.application.config.action_dispatch.encrypted_signed_cookie_salt key_generator = ActiveSupport::KeyGenerator.new(Rails.application.secrets.secret_key_base, iterations: 1000) secret = key_generator.generate_key(salt)[0, ActiveSupport::MessageEncryptor.key_len] sign_secret = key_generator.generate_key(signed_salt) encryptor = ActiveSupport::MessageEncryptor.new(secret, sign_secret) decrypted_session = encryptor.decrypt_and_verify(cookie) 为nil,这导致该步骤失败。我尝试了一个空的secret_key_base字符串,但是也失败了。

我没有使用新的master_key方法,我仍然选择使用''

1 个答案:

答案 0 :(得分:0)

对于试图在Rails 5.2中获得密钥基础的任何人,我都有同样的问题,经过一番研究,我使用了Rails.application.secret_key_base。这是一个github代码,显示了解密的完成方式。 https://gist.github.com/inopinatus/e523f36b468f94cf6d34410b73fef15e