该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
struct start
{
int long long n1;
int long long n2;
uuid_t tid;
char sk;
};
start stobj;
start initial()
{ // print p1 q1 N1 ;generate random primes by sever;and send N to tag
uuid_t TID; //generate the TID
uuid_generate( TID );
for(i=0;i<16;i++)
{
printf("%02X-",TID[i]);
}
printf("\n");
unsigned char digest[SHA_DIGEST_LENGTH];
SHA1(TID, strlen((const char*)TID), digest);
char SK[SHA_DIGEST_LENGTH*2+1];
for(int i = 0; i < SHA_DIGEST_LENGTH; i++)
sprintf(&SK[i*2], "%02x", (unsigned int)digest[i]);
printf("SHA1 digest: %s\n", SK);
srand((unsigned)time(NULL));
while(1){
p1 = MIN + (rand() % (MAX-MIN));
if(judgeprime(p1)){
cout << "p1 = " << p1 << endl;
break;
}
else
continue;
}
while(1){
q1 = MIN + (rand() % (MAX-MIN));
if(judgeprime(q1)){
cout << "q1 = " << q1 << endl;
break;
}
else
continue;
}
N1 = p1 * q1;
cout << "N1 = " << N1 << endl;
while(1){
p2 = MIN + (rand() % (MAX-MIN));
if(judgeprime(p2)){
cout << "p2 = " << p2 << endl;
break;
}
else
continue;
}
while(1){
q2 = MIN + (rand() % (MAX-MIN));
if(judgeprime(q2)){
cout << "q2 = " << q2 << endl;
break;
}
else
continue;
}
N2 = p2 * q2;
cout << "N2 = " << N2 << endl;
stobj.n1 = N1;
stobj.n2 = N2;
memcpy(stobj.tid, TID, strlen(TID)+1);
stobj.sk = SK;
return start;
}