(优化) 优化文件读写与加密逻辑
This commit is contained in:
@@ -7,77 +7,67 @@ using namespace std;
|
||||
// 加密密钥
|
||||
string ENCRYPTION_KEY = "";
|
||||
|
||||
static int write_file(const std::string & fname, std::vector<char>& buf){
|
||||
static int write_file(const std::string& fname, std::vector<char>& buf) {
|
||||
std::ofstream fs(fname, std::ios::binary | std::ios::out);
|
||||
if(!fs.good()){
|
||||
std::cerr<<fname<<" does not exist"<<std::endl;
|
||||
if (!fs.good()) {
|
||||
std::cerr << fname << " does not exist" << std::endl;
|
||||
return -1;
|
||||
}
|
||||
// 加密数据
|
||||
size_t keyIndex = 0;
|
||||
for(char &c : buf) {
|
||||
c ^= ENCRYPTION_KEY[keyIndex];
|
||||
keyIndex = (keyIndex + 1) % ENCRYPTION_KEY.length();
|
||||
fs << (int)((unsigned char)c) << ",";
|
||||
if (ENCRYPTION_KEY.length() > 0) {
|
||||
for (char& c : buf) {
|
||||
c ^= ENCRYPTION_KEY[keyIndex];
|
||||
keyIndex = (keyIndex + 1) % ENCRYPTION_KEY.length();
|
||||
fs << (int)((unsigned char)c) << ",";
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (char& c : buf) {
|
||||
fs << (int)((unsigned char)c) << ",";
|
||||
}
|
||||
}
|
||||
fs.close();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int load_file(const std::string & fname, std::vector<char>& buf){
|
||||
static int load_file(const std::string& fname, std::vector<char>& buf) {
|
||||
std::ifstream fs(fname, std::ios::binary | std::ios::in);
|
||||
if(!fs.good()){
|
||||
std::cerr<<fname<<" does not exist"<<std::endl;
|
||||
if (!fs.good()) {
|
||||
std::cerr << fname << " does not exist" << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
fs.seekg(0, std::ios::end);
|
||||
int fsize=fs.tellg();
|
||||
int fsize = fs.tellg();
|
||||
|
||||
fs.seekg(0, std::ios::beg);
|
||||
buf.resize(fsize);
|
||||
fs.read(buf.data(),fsize);
|
||||
fs.read(buf.data(), fsize);
|
||||
fs.close();
|
||||
|
||||
// 解密数据
|
||||
size_t keyIndex = 0;
|
||||
for(char &c : buf) {
|
||||
c ^= ENCRYPTION_KEY[keyIndex];
|
||||
keyIndex = (keyIndex + 1) % ENCRYPTION_KEY.length();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv){
|
||||
if(argc < 3) {
|
||||
int main(int argc, char** argv) {
|
||||
if (argc < 3) {
|
||||
cout << "model2mem [input] [output] <pwd>" << endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
vector<char> content;
|
||||
load_file(argv[1], content);
|
||||
if(content.size() <= 0) {
|
||||
if (content.size() <= 0) {
|
||||
cout << "do not read any content" << endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 如果提供了密码,则进行加密操作
|
||||
if(argc == 4) {
|
||||
if (argc == 4) {
|
||||
ENCRYPTION_KEY = argv[3];
|
||||
write_file(argv[2], content);
|
||||
} else {
|
||||
// 否则,直接写入文件
|
||||
std::ofstream fs(argv[2], std::ios::binary | std::ios::out);
|
||||
if(!fs.good())
|
||||
{
|
||||
std::cerr<<argv[2]<<" does not exist"<<std::endl;
|
||||
return -1;
|
||||
}
|
||||
for(char c : content) {
|
||||
fs << (int)((unsigned char)c) << ",";
|
||||
}
|
||||
fs.close();
|
||||
}
|
||||
|
||||
else {
|
||||
ENCRYPTION_KEY = "";
|
||||
}
|
||||
write_file(argv[2], content);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user