一种简单的方法是使用 Base64 编码对值进行编码。它与十六进制编码(Base16)非常相似,但使用了更长的字典。
Base64 字符串,如果准备得当,只包含可打印的字符。这有利于复制/粘贴和共享。
第二个好处是它具有 3:4 的编码比,这意味着它的效率相当高。3:4 的编码比例意味着对于输入中的每 3 个字节,使用 4 个字节进行编码(效率为 75%);十六进制编码是一种效率较低的 1:2 编码比,或者对于输入的每 1 个字节,使用 2 个字节进行编码(效率为 50%)。
您可以使用 Ruby 标准库Base64实现进行编码和解码,如下所示:
require "base64"
encoded = Base64.encode64("Taste the thunder!") # <== "VGFzdGUgdGhlIHRodW5kZXIh\n"
decoded = Base64.decode64(encoded) # <== "Taste the thunder!"
请注意,还有一个(大部分)URL 安全版本,因此您可以在 URL 的任何位置包含编码值,而无需任何额外的 URL 编码。这将允许您以模糊的方式在 URL 中传递信息,尤其是通常不会以这种方式轻松传递的信息。
试试这个来编码你的数据:
encoded_url_param = Base64.urlsafe_encode64("cake+pie=yummy!") # <== "Y2FrZStwaWU9eXVtbXkh"
decoded_url_param = Base64.urlsafe_decode64(encoded_url_param) # <== "cake+pie=yummy!"
在 URL 中使用 Base64,虽然实际上不是“安全”,但有助于防止窥探您的数据和意图。在 URL 中使用 Base64 值的唯一潜在缺点是 URL 必须保持区分大小写,并且某些应用程序不遵守该要求。有关更多信息,请参阅URL 是否应区分大小写SO 问题。