Go言語でパスフレーズをkeyに変換する時はbcryptやscryptを使えと書かれている書かれている場所
Goで文字列のパスフレーズをkeyに使うときには、bcryptやscryptのようなパッケージを使うことを推奨していることが書かれている場所。 原文:
If you want to convert a passphrase to a key, use a suitable package like bcrypt or scrypt.
これを書いている動機は、パスフレーズを単純に[]byte("my passphrase")としてバイト列に変換してもセキュアなのか今まで疑問に思っていたから。これはGo言語で書いていて思ったというより、他の言語でもの同様のことで疑問に思っていた。 bcryptには以下の関数があって名前と説明からパスワードからキーを生成しそうである。
code:go
func GenerateFromPassword(password []byte, cost int) ([]byte, error)
scryptには一つ関数があって、以下の定義になっている。
code:go
// 定義
func Key(password, salt []byte, N, r, p, keyLen int) ([]byte, error)
code:go
// 使用例
dk, err := scrypt.Key([]byte("some password"), salt, 32768, 8, 1, 32)
"scrypt key derivation function"がキーワードのように思える。鍵導出関数。