шифрование в с ++ - PullRequest
       1

шифрование в с ++

0 голосов
/ 08 января 2011

edit: я реализую алгоритм на c ++.

#include<iostream>
#include<math.h>
#include<string>

using namespace std;

 int gcd(int n,int m)
   {
   if(m<=n && n%m ==0)
   return m;
   if(n<m)
   return gcd(m,n);
   else
   return gcd(m,n%m);
  }

int REncryptText(char m)
  {


      int p = 11, q = 3;
      int e = 3;
      int n = p * q;
      int phi = (p - 1) * (q - 1);

      int check1 = gcd(e, p - 1);
      int check2 = gcd(e, q - 1);

      int check3 = gcd(e, phi);

            //     // Compute d such that ed ≡ 1 (mod phi)
            //i.e. compute d = e-1 mod phi = 3-1 mod 20
            //i.e. find a value for d such that phi divides (ed-1)
            //i.e. find d such that 20 divides 3d-1.
            //Simple testing (d = 1, 2, ...) gives d = 7

   //   double d = Math.Pow(e, -1) % phi;

      int d = 7;

      // public key = (n,e) // (33,3)
      //private key = (n,d) //(33 ,7)

      double g = pow(m,e);
      int ciphertext = g %n;
      // Now say we want to encrypt the message m = 7, c = me mod n = 73 mod 33 = 343 mod 33 = 13. Hence the ciphertext c = 13. 

      //double decrypt = Math.Pow(ciphertext, d) % n;
      return ciphertext;
  }

int main()
    {
    char plaintext[80],str[80];

    cout<<" enter the text you want to encrpt";
    cin.get(plaintext,79);

    int l =strlen(plaintext);
    for ( int i =0 ; i<l ; i++)
        { 
        char s = plaintext[i];
        str[i]=REncryptText(s);
        }
for ( int i =0 ; i<l ; i++)
    { 
    cout<<"the encryption of string"<<endl;
        cout<<str[i];
    }


return 0;
}

ошибка сообщения об ошибке C2296: «%»: недопустимо, левый операнд имеет тип «double»

1 Ответ

2 голосов
/ 08 января 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...