Parameterize cost factor N of scrypt

This commit is contained in:
Daniel Huigens 2018-12-19 11:52:52 -05:00
parent 9567fb840d
commit 102d7c2d5f
2 changed files with 4 additions and 4 deletions

View file

@ -25,7 +25,7 @@ func DecryptWithoutIntegrity(key, input, iv []byte) ([]byte, error) {
return EncryptWithoutIntegrity(key, input, iv) return EncryptWithoutIntegrity(key, input, iv)
} }
// DeriveKey derives a key from a password using scrypt. // DeriveKey derives a key from a password using scrypt. N should be set to the highest power of 2 you can derive within 100 milliseconds.
func DeriveKey(password string, salt []byte) ([]byte, error) { func DeriveKey(password string, salt []byte, N int) ([]byte, error) {
return scrypt.Key([]byte(password), salt, 32768, 8, 1, 32) return scrypt.Key([]byte(password), salt, N, 8, 1, 32)
} }

View file

@ -29,7 +29,7 @@ func TestSubtle_DecryptWithoutIntegrity(t *testing.T) {
func TestSubtle_DeriveKey(t *testing.T) { func TestSubtle_DeriveKey(t *testing.T) {
salt, _ := hex.DecodeString("c828f258a76aad7b") salt, _ := hex.DecodeString("c828f258a76aad7b")
dk, _ := DeriveKey("some password", salt) dk, _ := DeriveKey("some password", salt, 32768)
if hex.EncodeToString(dk) != "9469cccfc8a8d005247f39fa3e5b35a97db456cecf18deac6d84364d0818d763" { if hex.EncodeToString(dk) != "9469cccfc8a8d005247f39fa3e5b35a97db456cecf18deac6d84364d0818d763" {
t.Fatal("DeriveKey returned unexpected result") t.Fatal("DeriveKey returned unexpected result")
} }