Java / Groovy:非确定性加密算法

时间:2014-06-18 02:53:58

标签: java algorithm encryption groovy non-deterministic

我正在开发一个Groovy应用程序,它必须为用户提供包含加密查询参数的链接。目前,我们使用AES加密算法,并使用与所有链路相同的IV。我们知道这很糟糕(因此我们想切换的原因),但这样做的原因是限制查询参数的大小(包括base64编码的16字节初始化向量,每个查询参数使得链接非常长)。我们想切换到非确定性算法,以便我们在查询数据中具有所需的随机性,但不必将IV存储在查询参数中。

由于我们正在使用Groovy,我们可以使用Java中的任何内容。虽然我不确定要开始研究哪种算法,但没有做太多的加密工作。理想情况下,我们需要一个可以在Java SE中使用的或者可以自由使用的Java库。此外,任何有关如何实现这些算法的详细信息的链接都受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

目的是不使用相同的初始化向量两次。如果您在解密时服务器知道的请求中有唯一的内容,则可以将其用作初始化向量。

否则,您可以简单地使用计数器作为初始化向量。保留一个中央计数器,每次加密时都会增加,并将该计数器放在加密数据前面。然后将此计数器扩展为16字节的初始化向量。