【问题标题】:RoR Encryption and Decryption for query string查询字符串的 RoR 加密和解密
【发布时间】:2019-09-27 14:56:30
【问题描述】:

过去几天我一直在搜索有关加密某些数据以在 URL 上使用的信息。

我基本上有 3 个字符串,然后我需要在一个唯一的令牌上加密。

例如:代码:'12345678' 电子邮件:'teste@encrypt.com' 名称:'nameTest'

这将作为 code%email%name 连接在一起,我需要加密它们。

当我需要在 URL 上传递加密字符串以供其他服务器解密时,最好的方法是什么?我使用的算法都放入了某种形式的 '/\=' 我猜这可能会导致问题

感谢您的帮助

【问题讨论】:

  • 不,如果您对结果字符串进行 url-escape,这些不会导致任何问题。你在这里尝试编码/解码:meyerweb.com/eric/tools/dencoder
  • 您的意思是“加密”如“防止人们看到内容”还是“编码”如“制作它以便我可以传递这些内容”?最简单的编码通常是 base64。加入% 会很麻烦,因为这是一个很大的假设,即这些字段不会包含它。

标签: ruby-on-rails ruby url encryption


【解决方案1】:

在 2019 年,URI.encode 已过时,不应使用

如果您想安全地将加密字符串放入 url 而不会出现特殊字符问题,那么您可以使用 CGI.escapeERB::Util.url_encode 来实现此目的。

require 'erb'

ERB::Util.url_encode("Hello world")
#=> "Hello%20world"

Rails 接收时会自动解码

如果您想要一些简单的东西来编码和隐藏可以稍后在某处解码并验证的原始数据,那么您可以使用主动支持提供的MessageVerifier

@verifier = ActiveSupport::MessageVerifier.new('s3Krit')
cookies[:remember_me] = @verifier.generate([@user.id, 2.weeks.from_now])
id, time = @verifier.verify(cookies[:remember_me])

http://api.rubyonrails.org/classes/ActiveSupport/MessageVerifier.html http://ngauthier.com/2013/01/rails-unsubscribe-with-active-support-message-verifier.html

如果您想要真正的加密,那么您可以研究这样的项目。它使用 OpenSSL: http://rocketjob.github.io/symmetric-encryption/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    相关资源
    最近更新 更多