phc-format
                                
                                 phc-format copied to clipboard
                                
                                    phc-format copied to clipboard
                            
                            
                            
                        📝 PHC String Format implementation for Node.JS
phc-format
  📝 PHC string format serializer/deserializer
  
  
    Coded with ❤️ by Simone Primarosa.
  
Motivation
The PHC String Format is an attempt to specify a common hash string format that's a restricted & well defined subset of the Modular Crypt Format. New hashes are strongly encouraged to adhere to the PHC specification, rather than the much looser Modular Crypt Format.
Install
npm install --save @phc/format
Usage
const phc = require('@phc/format');
const phcobj = {
  id: 'pbkdf2-sha256',
  params: {i: 6400},
  salt: Buffer.from('0ZrzXitFSGltTQnBWOsdAw', 'base64'),
  hash: Buffer.from('Y11AchqV4b0sUisdZd0Xr97KWoymNE0LNNrnEgY4H9M', 'base64'),
};
const phcstr = "$pbkdf2-sha256$i=6400$0ZrzXitFSGltTQnBWOsdAw$Y11AchqV4b0sUisdZd0Xr97KWoymNE0LNNrnEgY4H9M";
phc.serialize(phcobj);
// => phcstr
phc.deserialize(phcstr);
// => phcobj
You can also pass an optional version parameter.
const phc = require('@phc/format');
const phcobj = {
  id: 'argon2i',
  version: 19,
  params: {
    m: 120,
    t: 5000,
    p: 2
  },
  salt: Buffer.from('iHSDPHzUhPzK7rCcJgOFfg', 'base64'),
  hash: Buffer.from('J4moa2MM0/6uf3HbY2Tf5Fux8JIBTwIhmhxGRbsY14qhTltQt+Vw3b7tcJNEbk8ium8AQfZeD4tabCnNqfkD1g', 'base64'),
};
const phcstr = "$argon2i$v=19$m=120,t=5000,p=2$iHSDPHzUhPzK7rCcJgOFfg$J4moa2MM0/6uf3HbY2Tf5Fux8JIBTwIhmhxGRbsY14qhTltQt+Vw3b7tcJNEbk8ium8AQfZeD4tabCnNqfkD1g";
phc.serialize(phcobj);
// => phcstr
phc.deserialize(phcstr);
// => phcobj
API
TOC
- serialize(opts) ⇒ string
- Generates a PHC string using the data provided. 
- deserialize(phcstr) ⇒ Object
- Parses data from a PHC string. 
serialize(opts) ⇒ string
Generates a PHC string using the data provided.
Kind: global function
Returns: string - The hash string adhering to the PHC format.
| Param | Type | Description | 
|---|---|---|
| opts | Object | Object that holds the data needed to generate the PHC string. | 
| opts.id | string | Symbolic name for the function. | 
| [opts.version] | Number | The version of the function. | 
| [opts.params] | Object | Parameters of the function. | 
| [opts.salt] | Buffer | The salt as a binary buffer. | 
| [opts.hash] | Buffer | The hash as a binary buffer. | 
deserialize(phcstr) ⇒ Object
Parses data from a PHC string.
Kind: global function
Returns: Object - The object containing the data parsed from the PHC string.
| Param | Type | Description | 
|---|---|---|
| phcstr | string | A PHC string to parse. | 
Contributing
Contributions are REALLY welcome and if you find a security flaw in this code, PLEASE report it.
Please check the contributing guidelines for more details. Thanks!
Authors
- Simone Primarosa - Github (@simonepri) • Twitter (@simoneprimarosa)
See also the list of contributors who participated in this project.
License
This project is licensed under the MIT License - see the license file for details.