syscall や scrypt を使用せずに Golang/App Engine でパスワードを安全にハッシュする
パスワード ハッシュには bcrypt と scrypt が一般的に使用されますが、これらは使用できない場合があります。 Syscall へのアクセシビリティにより、App Engine に適しています。代わりに、安全なパスワード ハッシュ化に go.crypto ライブラリを利用することを検討してください。
go.crypto パッケージは、pbkdf2 と bcrypt の両方をサポートします。どちらの実装も完全に Go で記述されており、App Engine との互換性が保証されています。
1. bcrypt の使用
次の手順を使用して bcrypt を実装します。
<code class="bash">go get golang.org/x/crypto/bcrypt</code>
使用例:
<code class="go">import "golang.org/x/crypto/bcrypt" func clear(b []byte) { for i := 0; i < len(b); i++ { b[i] = 0; } } func Crypt(password []byte) ([]byte, error) { defer clear(password) return bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) } ctext, err := Crypt(pass) if err != nil { log.Fatal(err) } fmt.Println(string(ctext))</code>
これにより、次のような出力が生成されます:
a$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
2. pbkdf2 の使用
pbkdf2 を使用した単純なハッシュの場合:
<code class="go">import "golang.org/x/crypto/pbkdf2" func HashPassword(password, salt []byte) []byte { defer clear(password) return pbkdf2.Key(password, salt, 4096, sha256.Size, sha256.New) } pass := []byte("foo") salt := []byte("bar") fmt.Printf("%x\n", HashPassword(pass, salt))</code>
以上がsyscall や scrypt を使わずに Golang/App Engine でパスワードを安全にハッシュする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。