这是C ++ Rijndael密码类的标准基础吗?

时间:2018-06-24 14:44:31

标签: c++ network-programming aes standards rijndael

我正在自我学习成为一名密码学家,并且作为一个项目,我正在分析Rijndael AES标准。我的问题是关于密码功能的内部位置。我正在实现aes256,到目前为止,我知道我需要14个回合,这些回合也应在for循环逻辑中完成回合密钥的生成。私有函数是空的,因为我正在尝试首先降低抽象概念。我不是要求您为我编写代码。我要寻找的是确认所有函数和for循环都在正确的位置。

进一步澄清我对此的立场;我的印象是mixColumns使用矩阵乘法,shiftRows使用Galois Fields,而addRoundKey使用XOR。子字节显然是一种替换密码。如果错误,请对这些声明进行更正。

#include <math.h>
#include <string.h>
class Rijndael{
private:
void AddRoundKey(){

}

void SubBytes(){

}

void ShiftRows(){

}

void MixColumns(){

}

/*snipped inverse functions*/

public:

//This function is where I request your attention
void encrypt(){
        AddRoundKey();
        for(int i=0; i<14; i++){
                SubBytes();
                ShiftRows();
                MixColumns();
                AddRoundKey();
        }
        SubBytes();
        ShiftRows();
        MixColumns();
        AddRoundKey();
}
/*snipped decrypt function*/

}aes;

0 个答案:

没有答案