QT - 为何Affine Cipher无法解码?

时间:2016-02-10 23:25:46

标签: c++ qt encryption

基本上我的问题是我有一个QT c ++程序,它根据仿射密码对自定义输入进行编码和解码。编码功能基于我从维基百科找到的功能完美地工作,但解码不是。当我跑,它说模26不能应用于双,我明白当我pow(a, -1);它返回一个双,但我不明白为什么它会在我的,但不是任何其他解码器。这是解码函数,我的代码: enter image description here

相关代码:

QString MainWindow::affineDecode(QString string)
{
    QString done = "";
    QString temp = "";
    for (int x = 0; x < string.length(); x++)
    {
        if (parseAlphaOnly(string.at(x)))
        {
            //Formula: a^-1(x-b)%26
            if (string.at(x).isLower())
            {
                //Broken code start:
                temp = alphabetLower.at((pow(ui->spinBox->value(), -1) * (getAlphaPos(string.at(x)) - ui->spinBox_2->value())));
            }
            else if (string.at(x).isUpper())
            {
                temp = alphabetUpper.at(pow(ui->spinBox->value(), -1) * (getAlphaPos(string.at(x)) - ui->spinBox_2->value())%26);
            }
            //Broken code end
        }
        else if (!parseAlphaOnly(string.at(x)))
        {
            temp = string.at(x);
        }


        done += temp;
    }
    return done;
}

0 个答案:

没有答案