虚幻调用Sha1等加密函数

http请求要加签名,内容是时间戳和uri的加密 看了很久的SHA1库才发现虚幻自己是有HMAC加密接口的 两个加密函数如下 有可优化的部分请大佬评论指教 [ 下面注释掉的是错误写法 ]

`FString CosFileHelper::HashHmac(const FString& SignatureString, const FString& SecretKey)
{
    TArray<uint8> SecretKeyBytes;
    SecretKeyBytes.Append((uint8*)TCHAR_TO_UTF8(*SecretKey), SecretKey.Len());

    TArray<uint8> SignatureBytes;
    SignatureBytes.Append((uint8*)TCHAR_TO_UTF8(*SignatureString), SignatureString.Len());

    uint8 OutHash[FSHA1::DigestSize];
    FSHA1::HMACBuffer(SecretKeyBytes.GetData(), SecretKeyBytes.Num(), SignatureBytes.GetData(), SignatureBytes.Num(), OutHash);
    FString Result = FString::FromHexBlob(OutHash, FSHA1::DigestSize);
    UE_LOG(LogTemp, Log, TEXT("%s"), *Result);
    return Result;
}
FString CosFileHelper::Sha1(const FString InputString)
{
    // 将FString转换为UTF-8编码的字节数组
    TArray<uint8> InputBytes;
    InputBytes.Append((uint8*)TCHAR_TO_UTF8(*InputString), InputString.Len());

    // 计算SHA-1哈希值
    uint8 OutHash[FSHA1::DigestSize];
    FSHA1::HashBuffer(InputBytes.GetData(), InputBytes.Num(), OutHash);

    // 将哈希值转换为FString
    FString Result = FString::FromHexBlob(OutHash, FSHA1::DigestSize);
    return Result;
}

//FString CosFileHelper::Sha1(const FString string)
//{
//    uint8* result = new uint8();
//    int len = StringToBytes(string, result, 65535);
//    TArray<uint8> Array(result, len);
//    return Sha1(Array);
//} 
posted @ 2024-01-04 10:46  旅玖旅玖  阅读(17)  评论(0编辑  收藏  举报