0
我在使用Java EE Framework时今天看到了这种行为。每次我从服务器获取一个int ID时,该ID都以base 64编码加密+编码,并且加密的字符串被发回。每个请求都提供了不同的加密密钥。奇怪的行为是,如果我提出5个请求,我在第一个请求后收到的加密文本仍然有效(解密它会给我正确的int ID)。加密的工作原理是这样的:解密不同的键给出了相同的结果
request 1 for (same) ID => int ID + salt + ?(assume unique timestamp) = encrypted text 1 => encoded result 1 request 2 for (same) ID => int ID + salt + ?(assume unique timestamp) = encrypted text 2 => encoded result 2
我的问题是:没有缓存任何东西(测试在两个不同的站点,对于相同数量的不同的加密字符串将解密对两个站相同数量的),怎么会是这种行为可能,从这个意义上说,解密算法如何知道如何从许多12个字符的加密字符串映射到相同的初始数据?另外,对于可以映射到相同数据的加密字符串有多少限制?
谢谢!
P.S框架是开源的,它使用javax.crypto.Cipher.doFinal方法进行加密和解密。
感谢您的反馈。创建密码时,它使用javax.crypto.Cipher类的getCipher(Cipher.ENCRYPT_MODE)方法。整个类的文档位于http://stripes.sourceforge.net/docs/current/javadoc/net/sourceforge/stripes/util/CryptoUtil.html,源代码可以从http://sourceforge.net/下载。项目/条纹/文件/条纹/条纹%201.5.1/stripes-1.5.1-src.zip /下载。 – 2010-07-13 17:59:23