Bagaimana untuk menulis program penyulitan fail mudah melalui C++?
Pengenalan:
Dengan perkembangan Internet dan populariti peranti pintar, kepentingan melindungi data peribadi dan maklumat sensitif menjadi semakin penting. Untuk memastikan keselamatan fail, selalunya perlu untuk menyulitkannya. Artikel ini akan memperkenalkan cara menggunakan C++ untuk menulis program penyulitan fail mudah untuk melindungi fail anda daripada capaian yang tidak dibenarkan.
Bina program:
Mula-mula buat fail sumber C++ baharu dan sertakan fail pengepala yang diperlukan:
#include <iostream> #include <fstream> #include <string> using namespace std;
Seterusnya, tulis fungsi utama dan laksanakan fungsi program secara beransur-ansur mengikut keperluan dalam analisis keperluan.
3.1 Terima input pengguna:
int main() { string filePath; string key; cout << "请输入待加密文件的路径:"; cin >> filePath; cout << "请输入加密密钥:"; cin >> key; // 其它代码... return 0; }
Dalam kod ini, kami menggunakan cin
untuk menerima laluan fail dan kunci penyulitan yang dimasukkan oleh pengguna dan menyimpannya ke pembolehubah yang sepadan. cin
来接收用户输入的文件路径和加密密钥,并保存到相应的变量中。
3.2 读取待加密文件的内容:
ifstream inputFile(filePath, ios::binary); if(!inputFile) { cout << "无法打开文件:" << filePath << endl; return 1; } string fileContent((istreambuf_iterator<char>(inputFile)), (istreambuf_iterator<char>())); inputFile.close();
在这段代码中,我们使用ifstream
来打开待加密文件,并检查文件是否成功打开。如果文件无法打开,则输出错误信息并结束程序。
接下来,我们使用istreambuf_iterator
来读取文件的内容,并保存到fileContent
字符串中。
3.3 加密文件内容:
在加密文件内容之前,我们需要实现一个简单的加密算法。这里我们将使用简单的位操作(例如异或)来实现一个基于密钥的简单加密算法。
string encryptedContent = fileContent; for(int i=0; i<encryptedContent.size(); i++) { encryptedContent[i] ^= key[i % key.size()]; }
在这段代码中,我们遍历fileContent
字符串,并与密钥进行异或操作来加密文件内容。
3.4 保存加密后的内容到新文件:
string encryptedFilePath = filePath + ".encrypted"; ofstream outputFile(encryptedFilePath, ios::binary); if(!outputFile) { cout << "无法创建加密文件:" << encryptedFilePath << endl; return 1; } outputFile.write(encryptedContent.c_str(), encryptedContent.size()); outputFile.close();
在这段代码中,我们使用ofstream
来创建一个新的二进制文件,并检查文件是否成功创建。如果文件创建失败,则输出错误信息并结束程序。
接下来,我们使用write
rrreee
Dalam kod ini, kami menggunakan ifstream
untuk membuka fail yang akan disulitkan dan menyemak sama ada fail itu berjaya dibuka. Jika fail tidak boleh dibuka, mesej ralat akan dikeluarkan dan program tamat.
istreambuf_iterator
untuk membaca kandungan fail dan menyimpannya pada rentetan fileContent
. Dalam kod ini, kami mengulangi rentetan fileContent
dan XORnya dengan kunci untuk menyulitkan kandungan fail.
3.4 Simpan kandungan yang disulitkan ke fail baharu:
rrreeeofstream
untuk mencipta fail binari baharu dan menyemak sama ada fail itu berjaya dibuat. Jika penciptaan fail gagal, mesej ralat dikeluarkan dan program tamat. write
untuk menulis kandungan yang disulitkan ke dalam fail baharu dan menutup fail. Atas ialah kandungan terperinci Bagaimana untuk menulis program penyulitan fail mudah dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!