encryption
This commit is contained in:
commit
a0383401b1
28
src/loafle.com/overflow/encryption/encryption.go
Normal file
28
src/loafle.com/overflow/encryption/encryption.go
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package encryption
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/rand"
|
||||||
|
"golang.org/x/crypto/scrypt"
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PW_SALT_BYTES = 32
|
||||||
|
PW_HASH_BYTES = 64
|
||||||
|
)
|
||||||
|
|
||||||
|
func Encrypt(pw string) ([]byte, []byte, error) {
|
||||||
|
|
||||||
|
salt := make([]byte, PW_SALT_BYTES)
|
||||||
|
_, err := io.ReadFull(rand.Reader, salt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
hash, err := scrypt.Key([]byte(pw), salt, 16384, 8, 1, PW_HASH_BYTES)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return salt, hash, nil
|
||||||
|
}
|
15
src/loafle.com/overflow/encryption/encryption_test.go
Normal file
15
src/loafle.com/overflow/encryption/encryption_test.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package encryption
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestEncrypt(t *testing.T) {
|
||||||
|
salt, hash, err := Encrypt("MyPassword")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Logf("salt : %x\n", salt)
|
||||||
|
t.Logf("hash : %x\n", hash)
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user