Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- using namespace std;
- int main(int argc, char* argv[]) {
- if (argc == 3) {
- vector<int> bytearr;
- ifstream file(argv[2], ios_base::binary);
- if (file.is_open()) // вызов метода is_open()
- {
- long temp;
- while ((temp = file.get()) != EOF) {
- bytearr.push_back(temp);
- }
- file.close();
- if (strcmp(argv[1], "-e") == 0) {
- ofstream file(argv[2], ios_base::out | ios_base::trunc | ios_base::binary);
- //делаем кратно 6 добавляя пробелы в конец файла
- while (bytearr.size() % 6 != 0) {
- int temp = bytearr.size() % 6;
- for (int i = 0; i < temp; i++) {
- bytearr += " ";
- }
- }
- for (size_t i = 0; i < bytearr.size(); i++) {//шифрование
- if (i % 6 == 0) {
- bytearr[i] = bytearr[i - 4];
- bytearr[i - 1] = bytearr[i - 5];
- bytearr[i - 2] = bytearr[i];
- bytearr[i - 3] = bytearr[i - 2];
- bytearr[i - 4] = bytearr[i - 3];
- bytearr[i - 5] = bytearr[i - 1];
- int m = i;
- for (size_t i = m - 5; i < m; i++) {
- file << ((char)bytearr[i]) << endl;
- }
- i = m;
- }
- }
- cout << "Success: File encrypt. \n\n";
- file.close();
- }
- else if (strcmp(argv[1], "-d") == 0) {
- ofstream file(argv[2], ios_base::out | ios_base::trunc | ios_base::binary);
- for (int i = 0; i < bytearr.size(); ++i) {//расшифрование
- if (i % 6 == 0)
- {
- bytearr[i - 4] = bytearr[i];
- bytearr[i - 5] = bytearr[i - 1];
- bytearr[i] = bytearr[i - 2];
- bytearr[i - 2] = bytearr[i - 3];
- bytearr[i - 3] = bytearr[i - 4];
- bytearr[i - 1] = bytearr[i - 5];
- int m = i;
- for (size_t i = m - 5; i < m; i++) {
- file << ((char)bytearr[i]) << endl;
- }
- i = m;
- }
- cout << "Success: File decrypt. \n\n";
- file.close();
- }
- }
- else {
- cout << "Usage: lab <-e to encrypt or -d to decrypt> <filename>";
- return -1;
- }
- }
- else
- {
- cout << "Error: File not open\n\n" << endl;
- return -1;
- }
- }
- else {
- cout << "Usage: lab <-e to encrypt or -d to decrypt> <filename>\n\n";
- return -1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement