我使用CryptoApi加密文件(非对称加密)。 Everywthing还可以,但是当文件很大时,它无法对其进行加密。我搜索并发现我必须逐块加密。除最后一个块外,Final
函数中的CryptEncrypt
标志必须为false。
我知道以上所有概念,但我不知道如何实施它们。我的意思是我不知道如何逐块读取,加密和写入。 你能给我一个真实的代码示例。
更新
答案 0 :(得分:1)
我正在为将来会遇到这个问题的程序员编写这个解决方案:
在此链接中已经显示了如何加密大文件(逐块):
https://msdn.microsoft.com/en-us/library/windows/desktop/aa382358%28v=vs.85%29.aspx
注意:当您想使用上述代码时,必须更改某些内容
1)在加密中,块大小必须设置为128 - 11(DWORD dwBlockLen = 128 - 11
)
2)在解密时,块大小必须设置为128(DWORD dwBlockLen = 128
)
在胜利7中都进行了测试。
答案 1 :(得分:0)
尝试类似:
final_flag <- false
repeat
this_block <- read_next_block(file)
if (is_EoF(file)) {final_flag <- true }
encrypt(this_block, final_flag)
until (final_flag == true)
我对C ++文件系统处理不够了解,无法为文件末尾编写工作检查,但其中应该有一个。