1.在计算签名时,在toBase64之后,注意要.toPercentEncoding();这个目的主要是为了替换一些特殊字符。
//使用 UTF-8 编码,且进行了 URL 编码,十六进制字符必须大写,如 “:” 会被编码为 “%3A” ,空格被编码为 “%20”。
QByteArray sign = QMessageAuthenticationCode::hash(paramsStr.c_str(), secretKey, QCryptographicHash::Sha256)
.toBase64().toPercentEncoding();
spliceStr.append("&Signature=").append(sign.data());