Member 14868207 Ответов: 2

C++: как обмениваться входными и выходными данными для этого кода?


Вот код ниже. Код касается RSA.
#include "rsa.h"

int main()
{
  RSA rsa(13, 77);
  rsa.crypt("plainFile", "cipherFile");
  return 0;
}

rsa.cpp
<pre>#include "rsa.h"
#include <fstream>
#include <cmath>

RSA :: RSA(int k, int m)
: key(k), modulus(m)
{
}
RSA :: ~RSA()
{
}
void RSA :: crypt(const char* inFile, const char* outFile)
{
  ifstream  istrm(inFile, ios :: in);   
  ofstream  ostrm(outFile, ios :: out);
  int base, result;
  while (istrm >> base)
  {
    result = modulo(base, key, modulus);
    ostrm << result;
    ostrm << ' ';
  }
  istrm.close();
  ostrm.close();
}
int RSA:: modulo(int base, int power, int modulus)
{
  int result = 1;
  for (int i = 0; i < power; i++)
  {
    result = (result * base) % modulus;
  }
  return result;
}

ОГА.ч
<pre>#ifndef RSA_H
#define RSA_H
#include <iostream>
using namespace std;

class RSA
{
  private:
    int key;
    int modulus;
    int modulo(int base, int power, int modulus);
  public: 
    RSA(int key, int modulus);
    ~RSA();
    void crypt(const char* inFile, const char* outFile);
};
#endif

Выход должен быть таким
Contents of Plaintext File:
14 27 12 45 9 64 22 8
Contents of Ciphertext File:
49 48 12 45 58 36 22 50

Теперь я хотел бы сделать так, чтобы этот выход стал входом, и получить этот выход
#include "rsa.h"
int main ()
{
RSA rsa (13, 77); // 13 is the value of e and 77 is value of n
rsa.crypt ("plainFile", "cipherFile"); return 0;
}

Я пытаюсь обмениваться вводом и выводом, но не знаю, с чего начать, могу ли я просто немного измениться, чтобы сделать это? или мне нужно переписать код? кто-нибудь может помочь? Как мне это сделать? Спасибо.

Что я уже пробовал:

Я пытаюсь использовать вектор для вывода тока, но не знаю, как это сделать.

KarstenK

шифрование-это святая благодать вычислительной техники. Для этого вам нужно действительно много знаний. Так что узнайте об этом подробнее.

2 Ответов

Рейтинг:
13

Patrice T

Цитата:
Я пытаюсь обмениваться вводом и выводом, но не знаю, с чего начать, могу ли я просто немного измениться, чтобы сделать это? или мне нужно переписать код?

Операция, которую вы ищете, это расшифровкаИз-за того, как работает rsa, повторное применение rsa .crypt к cipherFile не даст вам обычный файл.
Вам нужно создать код для расшифровки данных в соответствии со схемой шифрования/дешифрования rsa.
Вы также должны отметить, что открытый ключ, используемый для шифрования, не является ключом, используемым для расшифровки.
RSA (криптосистема) - Википедия[^]


CPallini

5.

Patrice T

Спасибо

Рейтинг:
1

Yofoo

rsa(13, 77);

77=7*11

RSA param:
p=7
q=11
e=13
n=77
d=37   
d value condition: 
(d * e) % t == 1 
t = (p-1) * (q-1);


to decryption the value you can use rsa(37, 77);