int main(int argc, char **argv) { int ret = EXIT_SUCCESS; if (argc != 2 && argc != 3) { printf("Uso: %s numero_de_bytes\n", argv[0]); } else { if ((strcmp(argv[1], "--help")) == 0) { printf("RandomKey %s\n", VERSION); printf("Uso: %s numero_de_bytes\n", argv[0]); printf("Uso: %s numero_de_bytes archivo.txt\n", argv[0]); printf("Contacto: [email protected]\n"); } else { if (checkarg(argv[1]) < 0) { printf("%s error: %s no es valido\n", argv[0], argv[1]); ret = EXIT_FAILURE; } else { if (argv[2]) { ret = filekey(atoi(argv[1]), argv[2]); } else { makekey(atoi(argv[1])); } } } } return ret; }
void RSA::cryptRSA (char* fileMText,char* fileKey,char *fileCrypt) { string headCode="1000010010000100";/*head16bit*/ ifstream filetext(fileMText); ifstream filekey(fileKey); ofstream filecrypt(fileCrypt); if(!filetext){ cout<<"Fail!Filetext isn't exist"; return; } if(!filekey){ cout<<"Fail!Filekey isn't exist"; return; } /*read key from fileKey*/ string TEXT; ZZZ n,e; filekey>>TEXT; n=TEXT; filekey>>TEXT; e=TEXT; /*linked head16bit with bit random + KEY{128,192,256}*/ TEXT=headCode; ZZ numbersite; RandomBits(numbersite,(2032-KEY)); stringstream buffer; buffer<<numbersite; ZZZ code; code=buffer.str(); int strlen=code.get_str(2).length(); for(;strlen<2032-KEY;strlen++)TEXT+='1'; TEXT+=code.get_str(2); filetext>>headCode; code=headCode; TEXT+=code.get_str(2); /*********************/ /*C=M^e mod n*/ code.set_str(TEXT,2); mpz_powm(code.get_mpz_t(),code.get_mpz_t(),e.get_mpz_t(),n.get_mpz_t()); filecrypt<<convert_base64(code.get_str(2))<<endl; filecrypt.close(); filetext.close(); filekey.close(); }