Authentication 使用2个加密字符串进行身份验证

Authentication 使用2个加密字符串进行身份验证,authentication,cookies,encryption,redis,Authentication,Cookies,Encryption,Redis,所以基本上,我尝试使用cookie登录用户,而不是查询数据库以提高性能 以下是一个简单的想法: 通过SSL传输所有信息 设置全局密钥a和密钥B 在注册和密码更改时生成随机验证字符串 使用加密验证字符串,并将其存储在cookie中 用B加密验证字符串,并将其存储在cookie中 当用户尝试登录时,我用A和B解密每个字符串,比较它们是否匹配 我想知道这是不是个好主意 如果是: 我如何使用bouncycastle ASE-256、Digest或其他工具在Java中进行加密 与将会话变量存储在超高速数据

所以基本上,我尝试使用cookie登录用户,而不是查询数据库以提高性能

以下是一个简单的想法:

  • 通过SSL传输所有信息
  • 设置全局密钥a和密钥B
  • 在注册和密码更改时生成随机验证字符串
  • 使用加密验证字符串,并将其存储在cookie中
  • 用B加密验证字符串,并将其存储在cookie中
  • 当用户尝试登录时,我用A和B解密每个字符串,比较它们是否匹配
  • 我想知道这是不是个好主意 如果是:

    我如何使用bouncycastle ASE-256、Digest或其他工具在Java中进行加密

    与将会话变量存储在超高速数据库(如Redis)中的身份验证相比,此加密/解密过程对性能的影响有多大

    如果不是:
    我该怎么办?

    解密时,您只需将已知值与身份验证数据一起加密,并验证身份验证令牌(cookie)中是否存在该数据。不需要使用两把钥匙

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


    方案得到了更好的验证。

    我首先想到了这一点。但暴露cookie中的已知值不会给用户破解密钥带来风险吗?不,这将是已知的纯文本攻击或重播攻击,如果正确应用加密,这是不可能的(事实并非如此,因此有人说要先走另一条路)嗯……那么,有没有关于一种有效的方法可能会使数据库访问无效的建议?或者我应该使用什么加密方法?@MatthewYang脑海中浮现出某种签名时间戳,但这只是一个初步想法。换句话说,如果做得不好,它将失败得很惨。。。