From a0383401b14a6c8c71a4e48d431bcfca5b8fbfde Mon Sep 17 00:00:00 2001 From: insanity Date: Wed, 29 Mar 2017 12:29:06 +0900 Subject: [PATCH] encryption --- .../overflow/encryption/encryption.go | 28 +++++++++++++++++++ .../overflow/encryption/encryption_test.go | 15 ++++++++++ 2 files changed, 43 insertions(+) create mode 100644 src/loafle.com/overflow/encryption/encryption.go create mode 100644 src/loafle.com/overflow/encryption/encryption_test.go 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) +}