【发布时间】:2010-07-12 21:02:04
【问题描述】:
我今天在使用 Java EE 框架时看到了这种行为。每次我从服务器获取一个 int ID 时,该 ID 都会被加密 + 以 base 64 编码,然后将加密的字符串发回。每个请求都会给出一个不同的加密密钥。奇怪的行为是,如果我发出 5 个请求,我在第一个请求后收到的加密文本仍然有效(解密它会给我正确的 int ID)。加密的工作原理如下:
为(相同的)ID 请求 1 => int ID + salt + ?(假设唯一时间戳) = 加密文本 1 => 编码结果 1 为(相同的)ID 请求 2 => int ID + salt + ?(假设唯一时间戳) = 加密文本 2 => 编码结果 2我的问题是:没有缓存任何东西(在两个不同的站点上测试它,相同数字的不同加密字符串将在两个站点上解密为相同的数字),从解密算法如何知道的意义上说,这种行为怎么可能?如何将许多 12 个字符的加密字符串映射到相同的初始数据?此外,对于一个可以映射到相同数据的加密字符串的数量是否有限制?
谢谢!
P.S.Framework 是开源的,使用 javax.crypto.Cipher.doFinal 方法进行加密和解密。
【问题讨论】:
标签: jakarta-ee cryptography encryption