@secret = "7X9gx9E3Qx4EiUdB63nc" # Your secret key @timestamp = "2021-05-26 14:00:00" # The exact (French) time at which the API request was made @response = "WwBOU6s8DaMWmYdctBJwfuoujFgVygBUjhsbdf8eWqQ" def decrypt_response(response) key = OpenSSL::Digest::SHA256.hexdigest(@timestamp + @secret) decipher = OpenSSL::Cipher.new("aes-256-cbc") decipher.decrypt decipher.key = key[0..31] decipher.iv = generate_iv json = decipher.update(Base64.decode64(response)) + decipher.final JSON.parse(json) end def generate_signature key = OpenSSL::Digest::SHA256.hexdigest(@secret) decipher = OpenSSL::Cipher.new("aes-256-cbc") decipher.encrypt decipher.key = key[0..31] decipher.iv = generate_iv Base64.encode64(decipher.update(@timestamp) + decipher.final).strip end private def generate_iv full_iv = OpenSSL::Digest::SHA256.hexdigest( OpenSSL::Digest::SHA256.hexdigest( @secret ) ) full_iv.byteslice(0..15) end decrypt_response(@response) # => {status: "SUCCESS"} generate_signature # => "bDop0cbjKpkySlpvnNGvBMg7PuYFFgPPqTTS2RAHoY0="