1 openssl
我用openssl库编写了一个C程序,用AES加密/解密文件.问题是我无法工作(读取:加密)相同 file.rar.相反,我所能做的就是创建一个新的file.rar.enc然后删除原始file.rar.
通过这种方式,可以恢复原始数据file.rar,因此加密过程实际上是无用的.在加密/解密期间有没有办法在同一个文件中操作?
这是我的C代码:
FILE *ifp = fopen(to_encrypt, "rb");
FILE *ofp = fopen(new_name, "wb");
int bytes_read, bytes_written, num=0;
unsigned char indata[AES_BLOCK_SIZE], outdata[AES_BLOCK_SIZE];
unsigned char skey[17],iv[] = "myIV";
strcpy(skey, "myKey");
AES_KEY key;
AES_set_encrypt_key(skey, 128, &key);
while (1) {
bytes_read = fread(indata, 1, AES_BLOCK_SIZE, ifp);
AES_cfb128_encrypt(indata, outdata, bytes_read, &key, iv, &num, AES_ENCRYPT);
bytes_written = fwrite(outdata, 1, bytes_read, ofp);
if (bytes_read < AES_BLOCK_SIZE) break;
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式可以恢复原始文件.rar,然后加密过程真的没用.
您在此处的陈述暗示了特定的用例.如果您要发送加密文件,这种加密并非无用.如果它旨在防止以后的系统损害(例如:丢失的笔记本电脑),则加密是无用的.
如果您的系统遭到入侵,任何加密不足全盘加密都是不够的,原始数据可能仍然可以恢复.
在上述每种情况下,驱动器上都存在可以进行法医恢复的原始明文.你不会通过制作覆盖前一个文件的C程序来逃避这种情况.
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |