2011-01-08 8 views
0

bearbeiten: Ich implementiere einen Algorithmus in C++.Verschlüsselung in 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; 
} 

Fehlermeldung Fehler C2296: '%': illegal, hat linke Operand 'double'

+2

Warum 'nehmen REncryptText' ein Doppel und Ausgang ein Doppel? Sollte es keine Zeichenkette aufnehmen und eine Zeichenkette ausgeben? –

+0

@matt ellen, meine Funktion nimmt den ersten Wert von string und konvertiert seinen Chiffre-Code statt des ganzen auf einmal. Ich möchte nur jeden Wert einzeln mit for-Schleife übergeben. und bei allast wollen das Ding in den letzten Chiffre-Code einfügen. – Raja

+2

@Raja: Warum nimmt deine Funktion ein Double und ein Double zurück? Doppel sind keine Zeichenfolgen oder Zeichen. –

Antwort

2

Versuchen Sie diese ein.

Simple 2 way encryption for C#

+0

ich will keine eingebaute Funktion dafür haben. Ich möchte meine eigene Verschlüsselungstechnik verwenden.plz beantworte meine Frage – Raja

+1

@Raja: "mach es nicht so" ist manchmal die beste Antwort auf eine Frage. Ans plz sei höflich. –

+0

@henk Entschuldigung für jedes unpassende Wort – Raja