2023/12/3 文件操作

【问题描述】

 写一个加密程序,对文件1.txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。采用下面的简单加密算法:
 1)读入密钥的key是一个字符串;
 2)明文中字符c的密文为c^key[i];(^异或运算)
 3)循环使用key中的各个字符,直至处理完全部明文。如果key为空,则不作加密
 4)解密时,用同一个key重新加密密文,就可以得到明文。
【输入形式】
从标准输入流中读入一个密钥串,使用其对当前目录下的文件1.txt进行加密。
【输出形式】
将文件密文输出到文件2.txt
【输入样例】
输入密钥为:
1234
1.txt文件内容为
test
【输出样例】
输出密文到2.txt文件中。

2.txt文件内容为

EW@@

【样例说明】
从标准输入中读入一个密钥对文件1.txt加密,并将文件密文输出到2.txt文件中。
提示:可将得到的密文文件2.txt拷贝到1.txt文件中,并用原密钥对该文件再次加密,若得到的密文文件与原始文件相同,则说明程序算法正确。

  • 对文件进行操作的方法如下:
  • 包含头文件。(#include<fstream>)
  • 定义一个流对象,并将其与特定的对象联合。
  • (ifstream inputfile("1.text");  ofstream outputfile  ("2.text");)

https://blog.csdn.net/weixin_43256263/article/details/127502981

  • #include <iostream>
    #include <fstream>
    using namespace std;
    
    void encryptFile(const string& key)
    {
        ifstream inputFile("1.txt");
        ofstream outputFile("2.txt");
    
        if (!inputFile.is_open()) 
        {
            cout << "无法打开文件1.txt" << endl;
            return;
        }
    
        if (!outputFile.is_open()) 
        {
            cout << "无法打开文件2.txt" << endl;
            return;
        }
    
        char ch;//便于解密/加密单个字符单个字符转换
        int keyindex = 0;
        while (inputFile.get(ch)) 
        {
            if (!key.empty()) //如果key非空
            {
                ch = ch ^ key[keyindex];
                keyindex = (keyindex + 1) % key.length();
            }
            outputFile << ch;
        }
    
        inputFile.close();
        outputFile.close();
    }
    
    int main() {
        string key;
        cin >> key;
    
        encryptFile(key);
    
    
        return 0;
    }
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值