GenerateDerivedKey[password]
与えられた password からDerivedKeyオブジェクトを生成する.
GenerateDerivedKey[password,salt]
与えられた password と salt からDerivedKeyオブジェクトを生成する.
GenerateDerivedKey
GenerateDerivedKey[password]
与えられた password からDerivedKeyオブジェクトを生成する.
GenerateDerivedKey[password,salt]
与えられた password と salt からDerivedKeyオブジェクトを生成する.
詳細とオプション
- GenerateDerivedKeyは,計算集約型鍵導出関数を使って暗号として強力な鍵ハッシュを生成する.
- password と salt は,文字列,バイト値を表す整数のリスト,またはByteArrayオブジェクトでよい.
- GenerateDerivedKey[password]はGenerateDerivedKey[password,Automatic]に等しい.salt は,与えられていなければランダムに生成される.
- GenerateDerivedKeyはMethodオプションを取る.このオプションはAssociationを使って鍵導出関数とパラメータを指定する.
- Methodのよく使われる設定には以下がある.
-
"Function" 鍵導出関数 "FunctionParameters" 鍵導出関数のパラメータ - サポートされる鍵導出関数は,"scrypt","Argon2d","Argon2i","Argon2id"である.
- "scrypt"鍵導出関数の関数パラメータはAssociationで,以下が含まれる.
-
"KeySize" 64 望ましい鍵の長さ(単位:バイト) "N" 2^15 計算の費用係数 "r" 8 ブロックサイズ係数 "p" 1 並列化係数 - "N"の値は1より大きい2の整数ベキでなければならない.
- "Argon2x"鍵導出関数の関数パラメータはAssociationで,以下が含まれる.
-
"KeySize" 64 望ましい鍵の長さ(単位:バイト) "t" 2 反復回数 "m" 2^16 使用するメモリサイズ(単位:キロバイト) "p" 1 並列化係数 - "m"の値は2の整数ベキでなければならない.
- 暗号で安全な鍵を生成するために,鍵導出関数のパラメータは,通常,特定のコンピュータでの計算が数分の1秒を下回るように調整されている.
例題
すべて開く すべて閉じる例 (2)
スコープ (8)
GenerateDerivedKey[{1, 2, 3}]ByteArrayをパスワードとして使って派生鍵を生成する:
GenerateDerivedKey[ByteArray[{1, 2, 3}]]GenerateDerivedKey["password", {1, 2, 3}]デフォルトの"scrypt"メソッドのパラメータをカスタム化する:
GenerateDerivedKey["password", Method -> <|"FunctionParameters" -> <|"KeySize" -> 64, "N" -> 16, "r" -> 1, "p" -> 1|>|>]GenerateDerivedKey["password", "somesalt", Method -> <|"Function" -> "Argon2i"|>]GenerateDerivedKey["password", "somesalt", Method -> <|"Function" -> "Argon2d", "FunctionParameters" -> <|"KeySize" -> 32, "t" -> 2, "m" -> 2 ^ 16, "p" -> 1|>|>]DerivedKeyの文字列表現を生成する:
key = GenerateDerivedKey["password"];
key["PHCString"]DerivedKeyを使って鍵をその文字列表現から再建する:
DerivedKey[%]% === keyByteArrayをパスワードから生成する:
DerivedKey[Association["Function" -> "scrypt",
"DerivedKey" -> ByteArray[
"IpvdeaIaDUgAKgZeZxD1uIEzLD62zFMmCiJceu3Sg5F10vJmlzc84E6ZXBdbecisZ19zOXg/+4179PA7Zd8+GQ=="],
"Salt" -> ByteArray["vSmisIaQxauR5nR2n0j8hVEgg6AxbxVHnuyTfC2zrAo="],
"FunctionParameters" -> Association["KeySize" -> 64, "N" -> 32768, "r" -> 8, "p" -> 1]]]["DerivedKey"]オプション (2)
Method (2)
鍵の"FunctionParameters"しか指定されていない場合,これはデフォルトメソッドの"scrypt"をカスタマイズする:
GenerateDerivedKey["password", "somesalt", Method -> <|"FunctionParameters" -> <|"KeySize" -> 64, "N" -> 16, "r" -> 1, "p" -> 1|>|>]代替鍵導出関数"Argon2id"をデフォルトパラメータで使う:
GenerateDerivedKey["password", Method -> <|"Function" -> "Argon2id"|>]GenerateDerivedKey["password", Method -> <|"Function" -> "Argon2id", "FunctionParameters" -> <|"KeySize" -> 32, "t" -> 2, "m" -> 2 ^ 16, "p" -> 1|>|>]アプリケーション (3)
単純なパスワード文字列から暗号的に強力なパスワードハッシュを生成する:
GenerateDerivedKey["Apple1"]["PHCString"]key = GenerateDerivedKey["Apple1"]VerifyDerivedKey[key, "Apple1"]key = GenerateDerivedKey["Apple1"]["PHCString"]VerifyDerivedKey[key, "Apple1"]特性と関係 (3)
DerivedKeyは,与えられた同じパスワードとソルトから決定論的に生成される:
GenerateDerivedKey["password", "salt"] === GenerateDerivedKey["password", "salt"]key = GenerateDerivedKey["pass", "salt", Method -> <|"FunctionParameters" -> <|"KeySize" -> 64, "N" -> 16, "r" -> 1, "p" -> 1|>|>];
key === DerivedKey[key["PHCString"]]Grid[Table[{r, First[
AbsoluteTiming[GenerateDerivedKey["password", "salt", Method -> <|"FunctionParameters" -> <|"KeySize" -> 64, "N" -> 2 ^ 16, "r" -> r, "p" -> 1|>|>]]]},
{r, {2, 10, 30, 50, 90}}], Alignment -> Left, Dividers -> All]Grid[Table[{p, First[
AbsoluteTiming[GenerateDerivedKey["password", "salt", Method -> <|"FunctionParameters" -> <|"KeySize" -> 64, "N" -> 2 ^ 16, "r" -> 2, "p" -> p|>|>]]]}, {p, {2, 10, 30, 50, 70}}], Alignment -> Left, Dividers -> All]DerivedKeyからSymmetricKeyを生成する:
key = GenerateDerivedKey["pass"]GenerateSymmetricKey[key]考えられる問題 (4)
特定のパラメータについては,派生鍵の生成に非常に時間がかかることがある:
AbsoluteTiming[GenerateDerivedKey["password", "salt", Method -> <|"FunctionParameters" -> <|"KeySize" -> 64, "N" -> 2 ^ 16, "r" -> 100, "p" -> 1|>|>];]AbsoluteTiming[GenerateDerivedKey["password", "salt", Method -> <|"FunctionParameters" -> <|"KeySize" -> 64, "N" -> 2 ^ 16, "r" -> 200, "p" -> 1|>|>];]鍵導出関数のパラメータは,機械サイズ整数でなければならない:
GenerateDerivedKey["password", "salt", Method -> <|"FunctionParameters" -> <|"KeySize" -> 64, "N" -> 2 ^ 64, "r" -> 2, "p" -> 1|>|>]鍵導出関数によっては,パスワードとソルトのサイズに制限があるものがある:
GenerateDerivedKey["password", "salt", Method -> <|"Function" -> "Argon2i"|>]GenerateDerivedKey["password", "moresalt", Method -> <|"Function" -> "Argon2i"|>]記号鍵を作成する際は,派生鍵から得たランダムなデータが新たな鍵のサイズに合わせて切り詰めれることがある:
derived = GenerateDerivedKey["pass"]symmetric = GenerateSymmetricKey[derived]derived["KeySize"]
symmetric["KeySize"]希望のサイズの派生鍵を生成するためには,鍵のサイズを明示的に指定しなければならない:
derived = GenerateDerivedKey["pass", Method -> <|"FunctionParameters" -> <|"KeySize" -> 32|>|>];
derived["KeySize"]関連するガイド
-
▪
- 暗号
テキスト
Wolfram Research (2019), GenerateDerivedKey, Wolfram言語関数, https://reference.wolfram.com/language/ref/GenerateDerivedKey.html (2020年に更新).
CMS
Wolfram Language. 2019. "GenerateDerivedKey." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/GenerateDerivedKey.html.
APA
Wolfram Language. (2019). GenerateDerivedKey. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/GenerateDerivedKey.html
BibTeX
@misc{reference.wolfram_2026_generatederivedkey, author="Wolfram Research", title="{GenerateDerivedKey}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/GenerateDerivedKey.html}", note=[Accessed: 30-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_generatederivedkey, organization={Wolfram Research}, title={GenerateDerivedKey}, year={2020}, url={https://reference.wolfram.com/language/ref/GenerateDerivedKey.html}, note=[Accessed: 30-October-2026]}