ホームページ >バックエンド開発 >Golang >syscall や scrypt を使わずに Golang/App Engine でパスワードを安全にハッシュする方法

syscall や scrypt を使わずに Golang/App Engine でパスワードを安全にハッシュする方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 08:26:02658ブラウズ

How to Securely Hash Passwords in Golang/App Engine Without syscall or scrypt?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。