2013-03-05 67 views
0

所以基本上我试图用一个cookie记录用户,不查询数据库,以提高性能使用身份验证使用2个加密字符串

这里是一个简单的想法:

  1. 通过SSL
  2. 传输一切
  3. 设置一个全局秘密密钥A和秘密密钥B
  4. 生成的注册和密码修改
  5. 加密验证字符串以随机验证字符串,将其存储在协okie
  6. 加密验证串B,其存储在cookie的
  7. 当用户尝试登录时,我解密每个字符串A和B,比较,如果它们匹配

我想知道,如果它是一个好主意 如果是这样的话:

我怎么能在Java中使用bouncycastle ASE-256,Digest或其他什么来进行加密?

多少时,通过在超快速DB像Redis的

存储会话变量与认证相比,这是否加密/解密过程影响性能,如果不是: 我应该怎么办..

回答

2

解密时,您可以简单地将已知值与身份验证数据一起加密,以验证数据是否存在于身份验证令牌(Cookie)中。不需要使用两个键。

与数据库的速度差异取决于数据库配置以及执行的加密。我宁愿首先选择一个经过验证的方案,只发明你自己的表现让你别无选择。

方案更好地验证http://security.stackexchange.com

+0

我想过这个第一..但不会公开cookie中的已知值引入用户破解密钥的风险? – 2013-03-05 17:41:03

+0

不,这将是一个已知的纯文本攻击或重放攻击,如果密码被正确应用,这是不可能的(它永远不会,因此关于先采取其他路线的说法) – 2013-03-05 17:48:38

+0

嗯...所以有没有任何建议在一个有效的方法可能会使数据库访问失效? – 2013-03-05 17:58:28