Jakarta ee 不同密钥的解密得到相同的结果

Jakarta ee 不同密钥的解密得到相同的结果,jakarta-ee,cryptography,encryption,Jakarta Ee,Cryptography,Encryption,我今天在使用JavaEE框架时看到了这种行为。每次我从服务器获取一个int-ID时,该ID都会在base 64中进行加密+编码,并将加密的字符串发送回。每个请求都提供不同的加密密钥。奇怪的是,如果我发出5个请求,在第一个请求之后收到的加密文本仍然有效(解密它会给我正确的int-ID)。加密的工作原理如下: request 1 for (same) ID => int ID + salt + ?(assume unique timestamp) = encrypted text 1 =

我今天在使用JavaEE框架时看到了这种行为。每次我从服务器获取一个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 请求1获取(相同)ID=> int-ID+salt+?(假设唯一时间戳)=加密文本1=>编码结果1 请求2获取(相同)ID=> int-ID+salt+?(假设唯一时间戳)=加密文本2=>编码结果2 我的问题是:在不缓存任何内容的情况下(在两个不同的站点上进行测试,相同数字的不同加密字符串将在两个站点上解密为相同的数字),从解密算法如何知道如何从许多12个字符的加密字符串映射到相同的初始数据的意义上讲,这种行为是如何可能的?此外,对于映射到同一数据的加密字符串的数量是否有限制

谢谢


该框架是开源的,使用javax.crypto.Cipher.doFinal方法进行加密和解密

许多加密模式使用初始化向量来随机化密文。如果使用这种加密模式,那么对相同的明文加密两次会产生不同的密文,对它们进行解密会再次产生相同的明文


要回答您的所有问题,需要了解有关您使用的加密模式的更多详细信息。

谢谢您的反馈。创建密码时,它使用javax.crypto.cipher类的getCipher(cipher.ENCRYPT_MODE)方法。整个类的文档位于,源代码可以从下载。