我在尝试了解如何实施this constructor时遇到此错误。
我将调用取消了我所使用的功能,并且对我的问题进行了极少的演示:
uint32_t p=0, c;
uint8_t k=0x00;
c = p.AES::AES(AES_128, k);
我希望明文p
由AES加密,密钥k
加密为密文c
。
相反,由于我对OOP缺乏经验,我得到了错误Expression must have class type
。
不幸的是,图书馆根本没有完整的文档记录,所以我甚至无法通过示例学习(没有SO的帮助!) - 我在这里做错了什么?
答案 0 :(得分:5)
您有多个问题:首先您使用p
作为对象,但它是基本类型的变量。其次,您尝试将构造函数称为静态方法。
你应该这样做。
AES c(AES::AES_128, k);
将c
声明为AES
类型的变量,您可以使用类中的成员函数,如
c.encryptBlock(someArray, someOtherArray);
在我看来,你需要学习一些基本的(我的意思是真正的基础)C ++。我建议您查看The Definitive C++ Book Guide and List。
答案 1 :(得分:1)
您需要调整枚举范围
AES crypt = AES(AES_TYPE::AES_128, k);
同样要加密/解密,您需要分别使用以下功能。
void AES::encryptBlock(uint8_t *out, uint8_t *in);
void AES::decryptBlock(uint8_t *out, uint8_t *in);
所以你可以从你的crypt
对象中调用它,例如
crypt.encryptBlock();