Qt_AES加密库源码下载
https://github.com/bricke/Qt-AES
使用方法
http://www.lgwimonday.cn/archives/1976
注意事项:
1.在使用时记得要确保选择的level(AES_128、 AES_192、AES_256)与所使用的key的长度对应。
比如说你的key的长度为16byte的话,就要选择AES_128,因为16*8=128bit;其他同理。
这个库是没有对你的level、key的length做综合检查的,他默认你的key的长度是符合你选择的level的。因此假如你选择的level为192,但是你的key的长度为128bit,那么不足的64bit他就直接按照指针地址来递增访问了,也就是会访问到内存的未知区域,涉及到内存的未知区域,那取得的数也就会不确定了。假如你足够好运,加密解密时这64bit都是0,那你还是可以解密的。反之,会哭死。
2.padding最好不要选择ZERO,否则存在数据丢失的风险。选PKCS7挺好的。
使用时只需要AES加密库的源代码中的这三部分,拷贝到自己的源代码文件夹,然后将 qaesencryption.h、qaesencryption.cpp加入到工程中就可以了。
(其实最简单的就是把qaesencryption.h、qaesencryption.cpp加到你的工程就行,其他的都不要,要了反而增加一些别的报错风险)
经过测试,在Qt5.12.9上可用;但是在Qt5.15.2上不可用,具体原因不明,可能是Qt内部的函数发生了更改。
又测试了一下,发现只要key超过24byte,在Qt5.15.2也可以用了。
报__asm__错误的
C:\Users\Administrator\Desktop\AesTest\untitled4\DemoAES\AES\aesni\aesni-key-exp.h:14: error: C2065: “asm”: 未声明的标识符
看看是不是什么地方使用了 宏定义
USE_INTEL_AES_IF_AVAILABLE
把他去掉就行