我需要使用公钥加密一个100KB的文件。我阅读了一些帖子声称直接使用公钥加密大文件不实用,首选方法是使用对称密钥加密文件,然后再使用公钥加密此对称密钥。
看起来一个朴素的解决方案是将大文件分成几部分,然后使用相同的公钥加密每个部分。我的问题是,这种解决方案是否可行,以及为什么?
我需要使用公钥加密一个100KB的文件。我阅读了一些帖子声称直接使用公钥加密大文件不实用,首选方法是使用对称密钥加密文件,然后再使用公钥加密此对称密钥。
看起来一个朴素的解决方案是将大文件分成几部分,然后使用相同的公钥加密每个部分。我的问题是,这种解决方案是否可行,以及为什么?
非对称加密速度较慢,最常用的方法是使用非对称加密随机生成的对称密钥,然后使用该对称密钥加密数据。此外,最好使用公认的协议/标准来实现此目的(例如OpenPGP)。
除了对称密钥加密的速度提升外,还有另一个可能的好处:通过首先使用随机生成的安全对称密钥加密消息,然后将对称密钥加密为多个接收者的公共非对称密钥中的每一个,而无需重新加密整个消息。
将文件分割成较小的部分,然后使用某些非对称密码加密它们与加密过程的运行时成本无关。最佳实践是使用一个相对强大的密钥使用良好的对称密码来加密数据,然后使用非对称密码(使用您的公钥)加密用于对称加密的秘密密钥。