简单的密码来编码URL

Jam*_*onr 3 ruby encryption ruby-on-rails

我想编码一个网址(http://www.someurl.com),以便我可以将它作为参数添加到GET调用:

domain.com/encoded_url

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

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

dar*_*mkd 9

使用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"
Run Code Online (Sandbox Code Playgroud)