Encryption 压缩友好加密

Encryption 压缩友好加密,encryption,compression,Encryption,Compression,我需要存储一大堆加密文件。它们中的一组有非常相似的内容。我想使用压缩优化所需的空间,但我发现没有适合这种情况的加密算法。但是,有一个工具可以做到这一点:。但是,许可证使我无法使用它,而且我没有专门知识来研究它的实现并编写自己的代码。我要寻找的是任何一种可以做同样事情的现成的加密算法:如果使用相同的密钥,那么为类似的输入提供类似的输出。减少的加密强度是可以接受的。rsyncrypto使用的算法描述如下: 其实质是根据一些局部的、平移不变的标准将文件划分为块,然后分别加密这些块 该算法看起来并不复

我需要存储一大堆加密文件。它们中的一组有非常相似的内容。我想使用压缩优化所需的空间,但我发现没有适合这种情况的加密算法。但是,有一个工具可以做到这一点:。但是,许可证使我无法使用它,而且我没有专门知识来研究它的实现并编写自己的代码。我要寻找的是任何一种可以做同样事情的现成的加密算法:如果使用相同的密钥,那么为类似的输入提供类似的输出。减少的加密强度是可以接受的。

rsyncrypto使用的算法描述如下:

其实质是根据一些局部的、平移不变的标准将文件划分为块,然后分别加密这些块

该算法看起来并不复杂,您应该能够在几个小时内实现它

如果文件中相同的内容保持在相同的偏移量,则可以使用更简单的算法:


将文件分成大小恒定的块(比如64KiB),并使用CBC分别加密这些块。或者只使用为磁盘加密设计的模式,如XTS。

是否有什么东西阻止您先压缩文件,然后再加密它们?没有合适的加密算法是可压缩的,因为根据定义,加密的输出必须与随机噪声不可区分,以便不泄露有关文件原始内容的信息。当然,没有任何压缩算法能够压缩真正的随机数据——这是经过验证的信息理论。@boralid是的,文件以加密形式分别到达存储位置,并且不在那里解密。我知道我将不得不在某种程度上牺牲安全性,但这是可以接受的。类似的内容可以被转移,还是在每个文件中以固定的偏移量出现?@CodeInChaos我将每天存储多个文件的副本。我只想存储更改的内容。在两个文件之间,保持不变的通常应该在相同的位置。你的第二个建议可能对我有用。不过,让我想知道为什么rsyncrypto必须重新发明轮子。@tvdien rsyncrypto支持移位数据。如果一个块在不同的偏移处再次出现,它仍然会被识别为相似。这意味着他们不能简单地使用XTS或恒定大小的块。XTS将完全无法实现您想要的,因为部分加密密钥基于块的逻辑位置。因此,两个具有相同内容的加密块几乎肯定会产生不相关的密文。@Borelid如果您阅读关于该问题的评论,您将看到对于OP的问题,在相同偏移量检测相似内容就足够了。他不需要翻译不变性。在两个文件之间,保持不变的文件通常应位于同一位置。