2011-03-07 85 views
0

如何使用ruby紅寶石加密和解密url?紅寶石河豚加密url

例如:URL = http://localhost:3000?username=vam&paswd=1234&street=hyd&contact=999999999&company=raymarine&city=hyd&state=UP&country=ZP&zip_code=543211

+0

你想完成什麼?單獨加密url確實沒有問題,因爲在使用之前需要解密,並且需要將密鑰存儲在某個地方。 – CodesInChaos 2011-03-07 10:07:27

+0

爲什麼河豚,而不是一些新的密碼,如AES(Rijndael)或TwoFish? – CodesInChaos 2011-03-07 10:08:58

回答

3

Shamelessly stolen和適應,這似乎是你想要的。

require 'rubygems' 
require 'crypt/blowfish' 
require 'base64' 

plain = "http://localhost:3000?username=vam&paswd=1234&street=hyd&contact=999999999&company=raymarine&city=hyd&state=UP&country=ZP&zip_code=543211" 
puts plain 

blowfish = Crypt::Blowfish.new("A key up to 56 bytes long") 
enc = blowfish.encrypt_string(plain) 

mimed = Base64.encode64(enc) 

puts mimed 


$ ruby blowfish.rb 
http://localhost:3000?username=vam&paswd=1234&street=hyd&contact=999999999&company=raymarine&city=hyd&state=UP&country=ZP&zip_code=543211 
K9XLp7LmidHZnhQi1i93Lfi1qV4pWFzksnOkNDt/VqyWdZ0OA+K+0soWl7OZ 
bNOi17OLIkjhMzHx4Av+h1SL7GP9aletclQGO6XoW2Cge0JweChlj3HXjZT1 
fQ6WIqw0zVRaWmqvk1sTqKgvNhy7XPS99RPuX8JdVP87rreklam2LJC97sPh 
pu5W9U/lhW7VeRm1HgbI+M0= 

當然,如果你需要加密的內容作爲一個URL,然後在前面加上http://localhost:3000/foo?q=到加密的內容,並提供/foo/qGET處理程序,可以解密字符串,並盡一切可能是你需要做的用它。

0

Crypt庫不適用於Ruby 1.9及更高版本。您可以改用這個要點。它不需要寶石: https://gist.github.com/kajic/5686064

url = 'http://localhost:3000?username=vam&paswd=1234&street=hyd&contact=999999999&company=raymarine&city=hyd&state=UP&country=ZP&zip_code=543211' 
encrypted_url = Cipher.encrypt_base64('your secret key', url)