令牌生成方案比较

时间:2014-02-21 14:42:27

标签: java security soap

我们正在为SOAP服务定义时间敏感的令牌生成方案。目前我们有两个想法,我们不确定哪个更好,为什么。

方案1:

开头和结尾的兰特不会添加任何特定的值,但想法是添加一小层盐渍。

发件人

<token>rand(6) ++ encrypt(time) ++ rand(6)</token>

接收机

enc = token.substring(6,token.len-6)
time = decrypt(enc)
assert(time is within +/- range)

方案2:

这里我们将rands加密到令牌中。

发件人

<token>encrypt(rand(6) ++ encrypt(time) ++ rand(6))</token>

接收机

dec = decrypt(token)
time = dec.substring(6,dec.len-6)
assert(time is within +/- range)

所以我不只是寻找最好的答案,但为什么这是最好的。我找了一些文档或最佳实践,但缺少IEEE文档,我找不到多少。如果你有任何文件可以指出我们,我们都很喜欢!

1 个答案:

答案 0 :(得分:1)

在你提出的两个方案中,第一个方案并没有真正解决腌制的目标。来自Wikipedia

  

盐的主要功能是防止字典攻击   和预先计算的彩虹表攻击

我希望每次加密时,salting都会以不同方式加密相同的序列。例如(使用你的例子)

  encrypt(rand(6) + encryptable)

这样对同一序列的多次加密需要单独解密。

如果您需要唯一令牌,而不是依赖时间戳,为什么不使用GUID