【UE4】ハッシュ値でデータを比較

MD5 や SHA といったハッシュ関数を使いデータをハッシュ値に変換することで、より安全性の高いデータのやり取りやデータの比較に使えます。

MD5 - Wikipedia
Secure Hash Algorithm - Wikipedia


開発者に身近なところでいえば Git のコミットも SHA-1 というアルゴリズムハッシュ値で管理されています。

f:id:shuntaendo:20210827134113p:plain:w800


本題ですが、UE4 でも気軽にこれらのアルゴリズムを使ってデータをハッシュ値に変換することができます。

これらが扱えると例えば、スマホゲームなどでサーバーにあるコンテンツデータがローカルのものと一致しているか更新があるかなどがハッシュ値の比較で行えます。

エンジンデフォルトでサポートされているのは、MD5 , SHA-1 , SHA-256 です。
いずれもモジュールの追加などは不要で比較的容易に扱えます。

MD5

#include "Misc/SecureHash.h"

FString Hash = FMD5::HashBytes(Data.GetData(), Data.Num());
UE_LOG(LogTemp, Log, TEXT("Hash[%s]."), *Hash);

.


SHA-1

#include "Misc/SecureHash.h"

FSHAHash Hash;
FSHA1::HashBuffer(Data.GetData(), Data.Num(), Hash.Hash);
UE_LOG(LogTemp, Log, TEXT("Hash[%s]."), *Hash.ToString());

.


SHA-256

FSHA256Signature Signature;
if (FPlatformMisc::GetSHA256Signature(Data.GetData(), Data.Num(), Signature))
{
	UE_LOG(LogTemp, Log, TEXT("Hash[%s]."), *Signature.ToString());
}


UE Version : 4.26.2-15973114