C++ 加密一个";溪流;有AES

C++ 加密一个";溪流;有AES,c++,encryption,C++,Encryption,我不断生成一个字符串,需要将其写入本地文件(加密) 由于我的应用程序中已经有一个AES库,如果可能的话,我更愿意使用AES 方法1:AES的块大小为16字节,因此我需要在内存中缓冲16字节的数据,如果计算机崩溃,这些数据可能会丢失 方法2:首先将所有数据写入文件,然后使用AES-CBC定期加密整个文件。这样,用户可以在短时间内访问未加密的文件 还有其他方法吗?由于您可能无法将15个字节写入磁盘,请将数据填充到4KB的倍数(减去您需要的任何标头)并加密填充的数据。您是否预计计算机会崩溃?很遗憾,是

我不断生成一个字符串,需要将其写入本地文件(加密)

由于我的应用程序中已经有一个AES库,如果可能的话,我更愿意使用AES

方法1:AES的块大小为16字节,因此我需要在内存中缓冲16字节的数据,如果计算机崩溃,这些数据可能会丢失

方法2:首先将所有数据写入文件,然后使用AES-CBC定期加密整个文件。这样,用户可以在短时间内访问未加密的文件


还有其他方法吗?

由于您可能无法将15个字节写入磁盘,请将数据填充到4KB的倍数(减去您需要的任何标头)并加密填充的数据。

您是否预计计算机会崩溃?很遗憾,是的。运行该应用程序的计算机通常不会正常关闭,而是关闭电源。AES可以用作流密码。起点:“用户可以访问未加密的文件”。当然可以。加密可以防止中间人攻击。在短时间内,这不是一个属性,这是最基本的。使用,大多数实现都支持它,这一切都发生在函数中,即填充在加密时自动添加,在解密时自动删除。为什么填充为4KB?AES通常用@zaph:填充,因为这是您典型的文件系统使用的(如果不是多个文件系统的话)。不要只关注加密部分,这里的问题是关于断电情况下的持久性。你是填充文本文件、二进制文件等,还是让系统(你知道的,操作系统)为你这样做。而且这不仅仅是将其放在磁盘上,还需要创建目录条目,并且必须运行分配例程,刷新缓存。