Example #1
0
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()));
}
Example #2
0
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);*/
}
Example #3
0
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;
}