私は通常、bcrypt ライブラリを使用してパスワードのハッシュを行ってきましたが、ライブラリがsyscall
. スクリプトも試しました。他にどのような方法が安全で、どれが最善の方法でしょうか?
質問する
7122 次
1 に答える
14
go.cryptoを見てください。pbkdf2 と bcrypt のサポートを提供します。両方の実装は純粋に Go で書かれており、GAE でも問題なく動作するはずです。
最も簡単に使用できるのは、おそらく bcrypt です。パッケージを実行するには:
go get golang.org/x/crypto/bcrypt
使用例:
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))
出力は次のようになります。
$2a$10$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
単純にハッシュが必要な場合は、pbkdf2 を使用します。例:
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))
于 2013-11-07T04:43:09.307 に答える