void Widget::on_pushButton_2_clicked() { QByteArray ba=ui->textEdit_5->toPlainText().toLatin1(); char *text=ba.data(); //miracl *mip=&precision; mip->IOBASE=256; c=pow((Big)text,e,n); // c=m^e mod n mip->IOBASE=16; //cout << c << endl; ui->textEdit_6->setText(bs(c,c.len())); }
void Widget::on_pushButton_clicked() { //miracl *mip=&precision; mip->IOBASE=16; mip->IOBSIZ=3000; //set max size of iobuffer Big phi=0; int bits=ui->lineEdit->text().toInt(); e=65537; n=0; for(;;) { p=rand(bits,2); // random 512 bit number if (p%2==0) p+=1; while (!prime(p)) p+=2; q=rand(bits,2); if (q%2==0) q+=1; while (!prime(q)) q+=2; n=p*q; phi=(p-1)*(q-1); if (gcd(e,phi)!=1) continue; d=inverse(e,phi); break; } inv=inverse(p,q); ui->textEdit_2->setText(bs(p,p.len())); ui->textEdit_3->setText(bs(q,q.len())); ui->textEdit->setText(bs(n,n.len())); ui->textEdit_4->setText(bs(d,d.len())); /*QString s=QString::number(q.len(),10); QTextStream cout(stdout,QIODevice::WriteOnly); cout<<s<<endl; ui->textEdit->setText(s);*/ }
BOOL rever(Big &x,Big &y) { /* reverse digits of x into y * * returns TRUE if x is palindromic */ int m,n; int i,k,swaps; BOOL palin; y=x; palin=TRUE; k=y.len()+1; swaps=k/2; for (i=1;i<=swaps;i++) { k--; m=y.get(k); n=y.get(i); if (m!=n) palin=FALSE; y.set(i,m); y.set(k,n); } return palin; }