最近由于工作需要,在用户注册和登录因为是调用远程端口 要将填入数据加密以后再发送,用 get 方式容易被人反编译,所以就采用对称加密方式,刚开始研究了好几个 gem,但是都不与 PHP 的兼容,无法解析,系统自带的 openssl 虽然也是对称加密,但是无法使用,
1、在 gemfile 中 加入 gem 'fast-aes' 2, bundle install 3、在实用过程中发现 fast-aes 采用的 ecb 模式,即同一个字段经过加密处理生成的密文也是相同的 4、在用 base64 经行加密处理时,总是有"\n"的出现,所以应该对该特殊字段经行处理,否则会出错,解码无效 5、我 controller 方法如下,仅供参考
#encoding: utf-8
require 'base64'
require 'fast-aes'
class MeteorsController < ApplicationController
layout 'huaxuan'
def login
end
#用于解决跨域传输的问题
skip_before_filter :verify_authenticity_token, :only => [:login_create]
def login_create
if params[:username].blank?
flash[:notice] ='登录帐号不能为空!'
redirect_to login_url
elsif params[:password].blank?
flash[:notice] ='登录密码不能为空'
redirect_to login_url
else
string = "username=#{params[:username]}&password=#{params[:password]}"
key = 'UITN25LMUQC436IM' #这是一个128bit的自定义密钥可以自定义
aes = FastAES.new(key)
string1 = aes.encrypt(string)
string2 = Base64.encode64(string1)
if string2.length==64
else
text = string2.gsub("\n",'')
end
redirect_to "http://xxx.xxx.com/xxxx?{text.to_s}"
end
end
end