私は通常、パスワードのハッシュを行うのにbcryptライブラリを使用しましたが、ライブラリの使用によりsyscall
が使用できなかったのです。私もscryptを試みました。どのような他の方法が安全で、どちらが最善の方法でしょうか?Golang/App Engine - ユーザーのパスワードを安全にハッシュする
答えて
go.cryptoをご覧ください。 pbkdf2とbcryptをサポートしています。 どちらの実装も純粋にGoで書かれており、GAEでうまく動作するはずです。
最も簡単に使用するのはおそらくbcryptです。
go get golang.org/x/crypto/bcrypt
使用例:: は、パッケージの実行を取得するには、単にハッシュをしたい場合は、
$2a$10$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
PBKDF2を使用します。
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))
を出力は次のようなものになります。例:
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))
なぜ 'defer clear(password)'が必要ですか? –
@HelinWangプレーンテキストのパスワードが保存されていた場所のメモリを上書きするのが好きです。 – nemo
ありがとう、それは興味深い点です。 –
- 1. GetHashCodeを使用してユーザーのパスワードを「安全」にする
- 2. ユーザー名/パスワード(ローカル)を安全に保存する方法は?
- 3. ログインとパスワードのハッシュをセッションに安全に保存していますか?
- 4. SFTPはユーザー名とパスワードを安全に送信しますか?
- 5. ユーザー/パスワードを安全なコマンドで渡す方法
- 6. ユーザー名/パスワードをクリアに送信するのは安全ですか?
- 7. Json Web Tokenでユーザー名/パスワードなどの安全なデータを渡すには?
- 8. PHPコードの中にパスワードを安全に保存するには?
- 9. Google Compute EngineでAppEngineソケットを安全に設定するには
- 10. Apache htpasswd安全なパスワードの変更
- 11. 安全なウェブサイトのパスワード記憶
- 12. rails - 安全なID /パスワードの作成
- 13. 安全にanglejsにパスワードを保存する方法
- 14. greasemonkeyで安全にパスワードを保存するには?
- 15. GET/POST経由で安全にパスワードを送信するには?
- 16. パスワードをハッシュする
- 17. リモートで安全にWordPressにユーザーをインポート
- 18. 安全に別のjavascriptファイルにユーザ名/パスワードを渡す
- 19. パスワードをもっと安全にするRuby on Rails gem?
- 20. RESTful APIで安全なjavascriptパスワード
- 21. ハッシュ暗号で安全なログインページを作成する方法は?
- 22. php-engine設定ファイルを非表示にする/安全にするベストプラクティス?
- 23. サーバー上のユーザーのPHPスクリプトを安全に実行する
- 24. 安全な一時的なパスワードを送信する
- 25. バッチファイル/安全なバッチファイルでMySQLパスワードを暗号化する
- 26. ユーザーをセットアップアカウントに安全に招待する方法
- 27. データベースにユーザー入力コードを安全に保存する方法
- 28. ウェブアプリケーションのソースコードにパスワードを保存するのは安全ですか?
- 29. $ _GETが私の唯一のオプションである場合、ユーザー名+パスワードを送信する最も安全な方法
- 30. iPhone SDKでは、どのようにユーザー名/パスワードを安全なサイトにプログラムで渡しますか
私がhttp://code.google.com/p/go/source/browse/scrypt/scrypt.go?repo=cryptoにあるscryptライブラリに伝えることができる限り、 'syscall'を使ってください。 – Intermernet
Hmm。私はそれを試して、私は同じエラーが発生します。私はpbkdf2ライブラリがそれを使用していると思う - 私はそれを試しても、それも死ぬ。 – benkraus