【GDevelop】Hash 拡張機能の使い方

Hash 拡張機能は、文字列からハッシュ値を生成してくれる拡張機能です。

この拡張機能の活用例については「セーブデータは暗号化しよう!」をご覧ください。

拡張機能をインストールする方法については「新しい拡張機能のインストールの仕方」をご覧ください。

執筆時点のバージョンは 1.0.0 です。

ハッシュ値とは?

ググッてくださいw🤤

一応ざっくり説明すると、ハッシュ値とはハッシュ関数を通すことで得られる、一定の長さの値のことです。
このハッシュ値には、同じデータからは必ず同じハッシュ値が得られ、さらにハッシュ値から元のデータを復元することはできないという特徴があります。

そのため、データが改竄(かいざん)されていないかのチェックに利用することができます。

関数

インストールすると、文字列式(テキスト式)で次のような関数が選択できるようになります。

それぞれの使い方をざっくり説明します。

Hash a String with MD5

MD5 というハッシュ関数を利用して、ハッシュ値を生成することができる関数です。

MD5 は既に脆弱性(弱点)が発見されていて、重要なデータ(パスワードなど)のチェックには使えなのですが、生成負荷が SHA-256 より低いので、それほど重要ではない大きなデータの完全性をチェックしたい場合には、利用を検討しても良いと思います。

なお、この拡張機能の MD5 関数は、一部の漢字や絵文字などを正しく処理できません。
そのため、元のデータが同じでも、他のシステムの MD5 関数で生成したハッシュ値とは、値が異なる場合があります。
ご注意ください。

Hash a String with SHA256

SHA-2 の SHA-256 という種類のハッシュ関数を利用して、ハッシュ値を生成することができる関数です。

重要なデータからハッシュ値を生成したい場合は、MD5 ではなくこちらを使うようにしましょう。

ただし困ったことに、この拡張機能の SHA-256 関数は、半角英数字と半角記号にしか対応していません。つまり、日本語は正しく処理できません。
日本語などの対応していない文字が一文字でも入っていると、undefined という値を返します。

日本語を使いたい場合は?

日本語を含む文字列を、一度何らかの方法で半角英数字のみのデータ表記に変換してから、利用することで解決できます。

例えば、Unicode 拡張機能(詳しくは、「Unicode (UnicodeConversion) 拡張機能の使い方」をご覧ください)を利用するとか、JavaScript の encodeURI() と decodeURI() を利用するとかです。

コメント

このブログの人気の投稿

GDevelop の「イベント」を正しく理解しよう

【GDevelop】セーブデータは暗号化しよう!

GDevelop 5.3 がリリース!なので、ここ最近(2023年1月~2023年11月)の GDevelop バージョンアップまとめ