我正在寻找.NET下的文件加密库。 它需要能够寻找,因此CryptoStream是不可能的。 (我知道它继承了Seek方法,但它没有实现。)
我需要寻找,因为我的应用程序以非连续顺序处理大文件。我也需要同时读取和写入文件。
我知道大多数时候CBC用于文件加密,但使用它不可能寻找(和写入)。但不知何故,像TrueCrypt和BitLocker这样的全磁盘加密软件设法使用它。 (编辑:TrueCrypt不再使用CBC,他们转移到LRW然后转移到XTS。我的观点是这是可能的。)
这是一个爱好项目,所以我对免费图书馆感兴趣。如果它只支持.NET 4也没关系。
修改:Bouncy Castle并不好,因为它的 CipherStream 无法像.NET的CryptoStream那样寻找。
答案 0 :(得分:1)
一个选项可能是免费的充气城堡:
http://www.bouncycastle.org/csharp/
我不确定你想如何在你的项目中寻找。但它至少有一些功能可以解决搜索问题:
“X509CertificateParser / X509CrlParser现在处理不支持搜索的流中的多个证书/ CRL”
答案 1 :(得分:0)
在CBC下寻求并非不可能 - 实际上CBC模式是可以寻求的。要解密块i,您只需要知道密钥,加密块C_i和先前加密块C_i-1。您当然不必解密整个上一个流。
答案 2 :(得分:0)
如果您使用AES,那么XTS模式是一个不错的选择。这就是TrueCrypt所使用的。但XTS并不容易实现。
一种简单的方法是使用Threefish:它是一个可调整的阻塞程序,因此您可以简单地使用块索引作为调整,然后以类似ECB的方式加密数据。缺点是三鱼不是标准。这应该相对容易实现。