guid_new_text

新しいGUID(UUID)を生成し、その文字列表現を取得します。


taiseiue | 2021-08-10

定義

名前空間: Alice.Random
アセンブリ: Losetta.Runtime.dll
ソースコード: Alice.Random.cs

guid_new_text()

新しいGUID(UUID)を生成し、その文字列表現を取得します。

AliceScript
namespace Alice.Random;
public string guid_new_text();
戻り値
string 新しいGUIDの文字列表現。

対応
AliceScript RC1、RC2、GM、2.0、2.1、2.2、2.3、3.0、4
AliceSister GM、2.0、2.1、2.2、2.3、3.0、4
Losetta 0.8、0.9、0.10、0.11

s

説明

この関数は、RFC4122 Sec.4.4に準拠したUUIDv4を作成します。

作成したGUIDは、SAIMの実装によってxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxの形式に成形された後、出力されます。出力される値は、ハイフンで8桁、4桁、4桁、4桁、12桁のグループに区切られています。また、これらはすべて小文字です。

使用するSAIMの実装がAliceSisterであるかAliceScriptかLosettaを実行する環境がWindowsの場合、この関数はWindowsAPIのCoCreateGuid関数をラップします。

LosettaのWindows以外向けのバージョンでは、この関数は暗号学的に安全な疑似乱数ジェネレーター(CSPRNG)を呼び出してGUIDを生成します。AliceScriptのWindows向け以外のバージョンでは、GUIDが暗号学的に安全な方法で生成されるとは限りません。

この関数が生成する値は、暗号学的には安全ではありません。 たとえば、UUIDv4には、一部に予測可能なビットパターンがあります。 ほかにも、GUIDを生成する際に使用するエントロピーは、プラットフォームに関係なく最大122ビットですが、多くの暗号学的に安全とされるアルゴリズムではこのエントロピーは128ビット以上のものを使用します。暗号学的に安全な入力が求められている関数やAPIにこの値を渡すと、ポリシーに違反するとともに、信用を損なうことがあります。 そのため、これを暗号や、推測できないことが期待される値として使うことはできません。

暗号学的に安全な乱数が必要な場合は、random_intrandom_bytes関数を使用することを検討してください。

次の例では、GUIDを生成し表示します。

AliceScript
using Alice.Random;

print(guid_new_text());