| 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 96 .. 96 + (X - 1)) |
| |
| AES256-CTR is computed with a 256-bit AES key key_enc, and HMAC-SHA256 is |
| computed with a 256-bit key key_hmac, where |
| scrypt(password, salt, N, r, p, 64) == [key_enc][key_hmac] |