场景:
项目中使用qt进行登录,需要兼容bs端维护的密码信息,bs端使用的是CryptoJS进行的aes加密。在此记录下,qt使用aes加密的方法。
我们的前端项目使用的aes加密模式是:CBC 填充是:zeropadding 数据块是128位 输出是:base64,因此我这边记录的主要是这种模式的加解密方式。
其它加解密方式可以参考git: https://github.com/bricke/Qt-AES或下载压缩包里面的内容。
辨别前端使用的aes加密方式,可以在在线网址:http://tool.chacuo.net/cryptaes/进行测试。
实现方法
1、将https://github.com/bricke/Qt-AES上的文件下载下来或下载,并在qt的pro文件中引入项目。
2、加密实现的代码:
QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::CBC, QAESEncryption::ZERO);
QString key("test");
QString iv("test");
QByteArray encodeText = encryption.encode(inputStr.toLocal8Bit(), key.toLocal8Bit(), iv.toLocal8Bit());
QString encodeStr = encodeText.toBase64();
qDebug() << "encodeText:" << encodeText;
qDebug() << "encodeStr:" << encodeStr;
3、解密实现的代码:
QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::CBC, QAESEncryption::ZERO);
QString key("test");
QString iv("test");
QByteArray decodeText = encryption.decode(encodeText, key.toLocal8Bit(), iv.toLocal8Bit());
QString decodeStr = QString(encryption.removePadding(decodeText));
qDebug() << "decodeText:" << decodeText;
qDebug() << "decodeStr:" << decodeStr;