commit a0383401b14a6c8c71a4e48d431bcfca5b8fbfde Author: insanity Date: Wed Mar 29 12:29:06 2017 +0900 encryption diff --git a/src/loafle.com/overflow/encryption/encryption.go b/src/loafle.com/overflow/encryption/encryption.go new file mode 100644 index 0000000..be7e1cf --- /dev/null +++ b/src/loafle.com/overflow/encryption/encryption.go @@ -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 +} diff --git a/src/loafle.com/overflow/encryption/encryption_test.go b/src/loafle.com/overflow/encryption/encryption_test.go new file mode 100644 index 0000000..c664ac7 --- /dev/null +++ b/src/loafle.com/overflow/encryption/encryption_test.go @@ -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) +}