Ruby on rails Rails 4:如何解密Rails 4会话cookie(给定会话密钥和密码)
在Rails3会话中,cookie可以很容易地用base64解码进行解码,但在Rails4中,cookie是编码和加密的 我想知道如何读取经过编码和加密的rails 4 cookie(假设我们知道密钥库) 谢谢,Rails 4使用基于应用程序的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
密钥\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。如果您不熟悉盐的概念,请查看: