QT/C++实现HMAC-SM3散列加密

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为进行加密的密钥

找了挺久发现不是要钱就是不好使不是我想要的,该方法亲测可用,留个记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值