虚幻调用Sha1等加密函数

发布时间 2024-01-04 10:50:35作者: donkey9

http请求要加签名,内容是时间戳和uri的加密
看了很久的SHA1库才发现虚幻自己是有HMAC加密接口的

两个加密函数如下 有可优化的部分请大佬评论指教

[ 下面注释掉的是错误写法 ]

`FString CosFileHelper::HashHmac(const FString& SignatureString, const FString& SecretKey)
{
TArray 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 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 Array(result, len);
// return Sha1(Array);
//} 作者:旅玖旅玖 https://www.bilibili.com/read/cv27314148/?spm_id_from=333.999.0.0 出处:bilibili`