예제 #1
0
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;
}
예제 #2
0
파일: RSA.cpp 프로젝트: thangdnsf/PrGlib
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();
}