简单的密码来编码URL

时间:2014-10-26 08:18:04

标签: ruby-on-rails ruby encryption

我想对网址(http://www.someurl.com)进行编码,以便将其作为参数添加到GET调用中:

domain.com/encoded_url

一旦收到另一端,我需要能够解码网址,但是,安全性不是问题。我宁愿坚持使用简单的密码(必须能够处理像':'和'?'这样的特殊字符),因为更高级的密码会生成编码字符串,这些字符串不会作为有效的URI字符串传递,也不能作为URL参数传递。

Ruby中实现的哪种密码最适合此目的?

2 个答案:

答案 0 :(得分:8)

使用Base64 url​​safe_encode64

使用Base64是一个好主意,Ruby提供了URL安全实现,因为默认会生成像+和=这样的字符。 urlsafe_encode64将使用' - '而不是'+'而不是'+',因此可以像URL参数一样传递它们。

require "base64"

encoded_url = Base64.urlsafe_encode64('http://www.someurl.com', ) #=> "aHR0cDovL3d3dy5zb21ldXJsLmNvbQ=="
decoded_url = Base64.urlsafe_decode64(encoded_url) #=> "http://www.someurl.com"

答案 1 :(得分:1)

如果您确实需要对其进行编码并且安全性不是问题,那么只需使用Base64然后URI将其转义即可。 但是没有必要,只是uri逃避它。

str = Base64.encode64(url)

encoded_str = URI.encode(str)

不过,这是一个半可能的重复

Ruby url encoding string

相关问题