You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gryffyn d0ee4fdd5b
Updated changelog format to keepachangelog.
1 month ago
.drone.yml Added CI 1 month ago
.gitignore Added gitignore, go.sum, LICENSE 1 month ago
CHANGELOG.md Updated changelog format to keepachangelog. 1 month ago
LICENSE Added gitignore, go.sum, LICENSE 1 month ago
README.md Added badges to readme 1 month ago
go.mod Added initial code. 1 month ago
go.sum Added gitignore, go.sum, LICENSE 1 month ago
scrypt.go Added unit test, fixed endian-ness error 1 month ago
scrypt_test.go Added unit test, fixed endian-ness error 1 month ago

README.md

go-scrypt-kdf

Build Status Go Report Card Go Reference

This package is a port of the scrypt-kdf nodejs library to Go.

Usage

package main

import (
    gsk "github.com/gryffyn/go-scrypt-kdf"
)

func main() {
    derivedKey, err := gsk.Kdf("password", gsk.DefaultParams)
    valid := gsk.Verify(derivedKey, "password") // true
    invalid := gsk.Verify(derivedKey, "not_password") // false
}

Format

Outputs a 96 byte []byte. Uses the Tarsnap format.

scrypt encrypted data format
----------------------------

offset	length
0	6	"scrypt"
6	1	scrypt data file version number (== 0)
7	1	log2(N) (must be between 1 and 63 inclusive)
8	4	r (big-endian integer; must satisfy r * p < 2^30)
12	4	p (big-endian integer; must satisfy r * p < 2^30)
16	32	salt
48	16	first 16 bytes of SHA256(bytes 0 .. 47)
64	32	HMAC-SHA256(bytes 0 .. 63)
96	X	data xor AES256-CTR key stream generated with nonce == 0
96+X	32	HMAC-SHA256(bytes 0 .. 96 + (X - 1))

License

Original repo license can be found here.

Licensed MIT, see LICENSE for details.