1.需要的第三方库
cryptopp
自行下载
2.写代码
#include "sm3.h"
#include "hmac.h"
#include "hex.h"
std::string SM3_HMAC(const std::string& data, const std::string& key) {
std::string digest;
// 将字符串转换为字节数组
byte* keyBytes = reinterpret_cast<byte*>(const_cast<char*>(key.data()));
byte* dataBytes = reinterpret_cast<byte*>(const_cast<char*>(data.data()));
// 创建一个 HMAC-SM3 对象
HMAC<SM3> hmac(keyBytes, key.size());
// 绑定数据
StringSource ss(dataBytes, data.size(), true,
new HashFilter(hmac,
new HexEncoder(
new StringSink(digest)
) // HexEncoder
) // HashFilter
); // StringSource
return digest;
}
//!调用部分
QString sm3_str = QString::fromStdString(SM3_HMAC(ba.data(),appkey_.toStdString()));
//说明
//此处ba为QByteArray ,原始报文数据是QJsonObject格式,生成流程如下
QJsonDocument document;
document.setObject(json);
QByteArray ba = document.toJson(QJsonDocument::Compact);
//appkey为进行加密的密钥
找了挺久发现不是要钱就是不好使不是我想要的,该方法亲测可用,留个记录
3160

被折叠的 条评论
为什么被折叠?



