Ruby on rails Rails 4:如何解密Rails 4会话cookie(给定会话密钥和密码)

Ruby on rails Rails 4:如何解密Rails 4会话cookie(给定会话密钥和密码),ruby-on-rails,session,ruby-on-rails-4,session-cookies,Ruby On Rails,Session,Ruby On Rails 4,Session Cookies,在Rails3会话中,cookie可以很容易地用base64解码进行解码,但在Rails4中,cookie是编码和加密的 我想知道如何读取经过编码和加密的rails 4 cookie(假设我们知道密钥库) 谢谢,Rails 4使用基于应用程序的密钥\u令牌\u库的密钥对cookie进行加密 以下是解密会话cookie的一般方案: 计算你的密匙 Base 64解码cookie值 将解码的cookie值除以“--”,这将导致两部分,第一部分是加密数据,第二部分是加密方案使用的初始化向量。Base 6

在Rails3会话中,cookie可以很容易地用base64解码进行解码,但在Rails4中,cookie是编码和加密的

我想知道如何读取经过编码和加密的rails 4 cookie(假设我们知道密钥库)

谢谢,

Rails 4使用基于应用程序的
密钥\u令牌\u库的密钥对cookie进行加密

以下是解密会话cookie的一般方案:

  • 计算你的密匙
  • Base 64解码cookie值
  • 将解码的cookie值除以“--”,这将导致两部分,第一部分是加密数据,第二部分是加密方案使用的初始化向量。Base 64独立解码每个部分
  • 通过使用密钥和初始化向量应用AES解密对加密数据进行解密
  • 我找不到一个可以轻松解密消息的网站(欢迎提供建议),通过编程可以这样做:

    secret = OpenSSL::PKCS5.pbkdf2_hmac_sha1(app_secret_token, 'encrypted cookie', 1000, 64)
    
    encrypted_message = Base64.decode64(cookie_str)
    cipher = OpenSSL::Cipher::Cipher.new('aes-256-cbc')
    encrypted_data, iv = encrypted_message.split("--").map {|v| ::Base64.strict_decode64(v)}
    
    cipher.decrypt
    cipher.key = secret
    cipher.iv  = iv
    
    decrypted_data = cipher.update(encrypted_data)
    decrypted_data << cipher.final
    
    Marshal.load(decrypted_data)
    
    secret=OpenSSL::PKCS5.pbkdf2_hmac_sha1(app_secret_token,'encrypted cookie',1000,64)
    加密消息=Base64.decode64(cookie\u str)
    cipher=OpenSSL::cipher::cipher.new('aes-256-cbc'))
    加密的_数据,iv=encrypted_message.split(“—”).map{| v |:::Base64.strict_decode64(v)}
    解密
    cipher.key=secret
    4.iv=iv
    解密的\u数据=cipher.update(加密的\u数据)
    
    解密数据嘿!
    'encrypted cookie'
    (第1行)和
    cookie_str
    (第3行)之间有区别吗?是的,有区别-加密cookie
    字符串被用作生成密钥所需的salt(可以重写,但这是默认salt),而
    cookie\u str
    是您希望解密的实际cookie。如果您不熟悉盐的概念,请查看: