目的:
使用QT进行AES加密,能用CryptoJs进行AES解密。
说明:
CryptoJs使用的AES加密文件为 aes.js
网上QT常用的AES加密方式
- Crypto++库
- Qca库
- Botan库
- 网友贡献的AES加密代码
crypto++ 和 qca 都需要下载源码编译成静态库或者动态库调用,方法比较复杂,没有编译成功。
botan 是QT自带的库,只需要引入头文件即可,调用还算是比较方便,但是我尝试的时候发现加密以后不能正确解密,不知道哪里弄错了,按道理来说不应该这样。
网友贡献的AES加密代码,可以正常加密和解密,但是和CryptoJs默认加密方式得出的结果不一样,配置了mode和padding 也不能得到相同的结果。
说到这里,常规手段已经用完了,好吧,结果一点都不理想。
非常规手段:
用QT调用js方法进行加解密。
大概步骤就是使用QJSEngine加载本地aes.js文件,然后调用js里面的方法进行加解密,获取返回结果,我这边得出的结果就是,加密不正确且无法解密。
到这里就结束了吗?不!我觉得还可以再抢救一下,也就是这篇文章的意义所在
==使用QML包含aes.js文件,再用QML函数调用aes.js的AES加密方法,最后用C++调用QML内的方法,获取加解密结果,成功!==
完!
原创文章,转载请注明出处:http://yliyun.com/blog/2016/05/30/qt-aes-cryptojs/