我通常使用bcrypt库进行密码散列,但由于库使用了syscall,所以无法这样做。我也试过氪星。还有哪些方法是安全的,哪一种是最好的方法?
发布于 2013-11-07 04:43:09
看看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))https://stackoverflow.com/questions/18545676
复制相似问题