我正在实现一个基于 Web 的文件存储服务 (C#)。文件存储在服务器上时将被加密,但挑战在于如何实现解密功能。
这些文件可以是任何大小,从几 KB 到几 GB。数据传输是分块完成的,因此用户从偏移量 50000、75000 等处下载数据。这对于未加密的文件很好,但如果使用加密,则必须在从偏移量读取每个块之前解密整个文件.
所以,我正在研究如何解决这个问题。到目前为止,我的研究表明可以使用 ECB 和 CBC。ECB 是最基本的(也是最不安全的),每个块都是单独加密的。欧洲央行的工作方式正是我所寻找的,但安全性是一个问题。CBC 类似,但您需要在解密当前块之前解密前一个块。只要从头到尾读取文件就可以了,并且在服务器上解密时保留数据,但归根结底,这并不比在传输之前解密整个文件服务器端好多少。
有谁知道我应该考虑的其他选择?我现在没有代码,因为我仍然只是在做理论研究。