2016-11-24 67 views
0

我一直在尋找關於加密一些數據以在URL上使用的過去幾天。RoR對查詢字符串的加密和解密

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

如:代碼:「12345678」電子郵件:'[email protected]的名字:「nameTest」

這將一起作爲代碼%郵件%名義加入,我需要將它們進行加密。

這樣做的最佳方式是什麼,因爲我需要將URL上的加密字符串傳遞給其他服務器進行解密?我使用所有的算法把某種形式的「/ \ =」,我想這可能會引起問題

感謝您的幫助

+0

不,如果你url轉義結果字符串,那麼不會引起任何問題。你可以在這裏嘗試編碼/解碼:http://meyerweb.com/eric/tools/dencoder/ –

+1

你的意思是「加密」,如「阻止人們看到內容」,或者你的意思是「編碼」所以我可以通過這些「?最簡單的編碼通常是base64。加入'%'會很麻煩,因爲這是一個很大的假設,即這些字段不會包含這些內容。 – tadman

回答

0

如果你想放心地把加密的字符串到URL不包含特殊字符的問題那麼你可以使用URI.encode來達到這個目的。

require 'uri' 

URI.encode("Hello world") 
#=> "Hello%20world" 
URI.decode("Hello%20world") 
#=> "Hello world" 

如果你想要的東西簡單的編碼和隱藏這可能在某個地方以後解碼和驗證,那麼你可以使用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/