{"_id":"secret-utils","_rev":"14-275bf4cb0b12f9e7fe79adabae952008","name":"secret-utils","description":"Common `crypto` snippets (generate random bytes, salt, hash password, etc)","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"secret-utils","version":"1.0.0","description":"Common `crypto` snippets (generate random bytes, salt, hash password, etc)","main":"index.js","scripts":{"test":"node test.js"},"repository":{"type":"git","url":"git://github.com/coolaj86/secret-utils.git"},"keywords":["crypto","hashsum","md5sum","sha1sum","sh256sum","sha384sum","sha512sum","secret","password","passphrase","shadow","hash","string","int","integer","number","range"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.com/"},"license":"Apache2","bugs":{"url":"https://github.com/coolaj86/secret-utils/issues"},"homepage":"https://github.com/coolaj86/secret-utils","_id":"secret-utils@1.0.0","_shasum":"d4e3dfab967a427440f91c0f217de56dda000d51","_from":"./","_npmVersion":"1.4.9","_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"dist":{"shasum":"d4e3dfab967a427440f91c0f217de56dda000d51","tarball":"https://registry.npmjs.org/secret-utils/-/secret-utils-1.0.0.tgz","integrity":"sha512-KeWKYTZZwFYDUlk1ztxAHDo4bZ8SjSVuG1/RMSiR2dvH+OrIaN4rVov5RaBsKLLNcyueMeQTDlO4x2jnni7PZw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEG6DquHLV0rVp3td3+Y3eHALp8mG1p+stkIQMQ8B6djAiEAmT+QB+2kHYRHlyAvQXYqUNdg9lplu4lbXHmVha57zlc="}]}},"1.0.1":{"name":"secret-utils","version":"1.0.1","description":"Common `crypto` snippets (generate random bytes, salt, hash password, etc)","main":"index.js","scripts":{"test":"node test.js"},"repository":{"type":"git","url":"git://github.com/coolaj86/secret-utils.git"},"keywords":["crypto","hashsum","md5sum","sha1sum","sh256sum","sha384sum","sha512sum","secret","password","passphrase","shadow","hash","string","int","integer","number","range"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.com/"},"license":"Apache2","bugs":{"url":"https://github.com/coolaj86/secret-utils/issues"},"homepage":"https://github.com/coolaj86/secret-utils","dependencies":{"crypto-rand":"0.0.2","urlsafe-base64":"0.0.2"},"_id":"secret-utils@1.0.1","_shasum":"b39fd0c00e3ff3663c0cafb75a61651e57e721a5","_from":"./","_npmVersion":"1.4.9","_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"dist":{"shasum":"b39fd0c00e3ff3663c0cafb75a61651e57e721a5","tarball":"https://registry.npmjs.org/secret-utils/-/secret-utils-1.0.1.tgz","integrity":"sha512-WE7uOlPg/JI+jql1vBRuFiqc1PhSIVUxvmmkGPDcTAVWwEH/jmkSSabnE6eyOfaHCQi9bxJrJ6azEPQA+kP7Ag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQ8vRIbKnInfXNDem2Oc2ffj0br5ZfWvEYfCdHl4cJOQIhAJXqHbV9NuLervPZZ1HmbqINYPwwsmo3bqywmnc9YGaX"}]}},"1.0.2":{"name":"secret-utils","version":"1.0.2","description":"Common `crypto` snippets (generate random bytes, salt, hash password, etc)","main":"index.js","scripts":{"test":"node test.js"},"repository":{"type":"git","url":"git://github.com/coolaj86/secret-utils.git"},"keywords":["crypto","hashsum","md5sum","sha1sum","sh256sum","sha384sum","sha512sum","secret","password","passphrase","shadow","hash","string","int","integer","number","range"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.com/"},"license":"Apache2","bugs":{"url":"https://github.com/coolaj86/secret-utils/issues"},"homepage":"https://github.com/coolaj86/secret-utils","dependencies":{"crypto-rand":"0.0.2","urlsafe-base64":"0.0.2"},"_id":"secret-utils@1.0.2","_shasum":"f3c1a14610a94c7fa0317dd156a8fe0098036fa7","_from":"./","_npmVersion":"1.4.9","_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"dist":{"shasum":"f3c1a14610a94c7fa0317dd156a8fe0098036fa7","tarball":"https://registry.npmjs.org/secret-utils/-/secret-utils-1.0.2.tgz","integrity":"sha512-sxwGOKgk3q8cLti2tkGTkQ1tYJHyUVld6eCA64wMktKOeegOsjAiIJv07ISSBPItl/9xpGQdV2n+ZZOS6l8XCg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhnamrbAKy/RUs74QOR0TE3HbLbD2HwIT4cNLt+CmPPQIhANvjbh6rcwzyzuwq74WudzqXy8SQIzB86hRwiatTDemD"}]}},"2.0.0":{"name":"secret-utils","version":"2.0.0","description":"Common `crypto` snippets (generate random bytes, salt, hash password, etc)","main":"index.js","scripts":{"test":"node test.js"},"repository":{"type":"git","url":"git://github.com/coolaj86/secret-utils.git"},"keywords":["crypto","hashsum","md5sum","shasum","sha1sum","sh256sum","sha384sum","sha512sum","secret","password","passphrase","shadow","hash","string","int","integer","number","range"],"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"https://coolaj86.com/"},"license":"Apache2","bugs":{"url":"https://github.com/coolaj86/secret-utils/issues"},"homepage":"https://github.com/coolaj86/secret-utils","dependencies":{"crypto-rand":"0.0.2","urlsafe-base64":"0.0.2"},"gitHead":"ebbd181e816f9054939877d30e5329a1d0d10d3b","_id":"secret-utils@2.0.0","_shasum":"12a1443762c21072f9b418d541dbd5a4c31a8466","_from":".","_npmVersion":"2.11.0","_nodeVersion":"2.2.1","_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"dist":{"shasum":"12a1443762c21072f9b418d541dbd5a4c31a8466","tarball":"https://registry.npmjs.org/secret-utils/-/secret-utils-2.0.0.tgz","integrity":"sha512-FVEVZdoecvQzm5XPeAAgEsv6uXtSLO2D1eafNgsZeFCm4XjubCJLdfhKH+rVN0+T0kTsalaccpvK1h+/Ou7lXw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCucRh+jYjUbfL75LFFtbELN7slUGSve23w+NUPDOBtVgIgPuMdIjNaPNENhx4nHJooCt3VKi91XPZh9fBiMk+KVm0="}]}}},"readme":"secret-utils\n============\n\nCommon `crypto` snippets (generate random bytes, salt, hash password, etc)\n\nYou should use the Node.js modules for `bcrypt` or `scrypt`,\nbut if you'd rather have pure Node.js JavaScript without compiled modules,\nwell, here you go.\n\n```bash\nnpm install --save secret-utils\n```\n\n```javascript\nvar secretutils = require('secret-utils');\n\nsecretutils.url64(32);\n// '1cCk4GzgSDjbuFSRHOrte5_WHW02oYQwaxetY72UxPc'\n```\n\nAPI\n===\n\n  * createShadow\n  * testSecret\n  * url64\n  * random\n  * int\n  * hashsum\n  * sha1sum\n  * sha256sum\n  * alphanum\n\n### .createShadow()\n\n`createShadow(secret[, hashtype[, salt ]])`\n\n```javascript\nsecretutils.createShadow(\"secret\");\n\n// output\n{ salt: 'rVhp3Lb7WktdzC0DY9TZtHOOVtdZVWeMCv6YLKizaWI'\n, shadow: 'e26f053d55a744e823f37d1caacd9bb4c082f4ec09fe891e60890f8f8505882c'\n, hashtype: 'sha256'\n}\n```\n\nGiven a secret (password, passphrase, etc), returns a shadow, hashtype, and salt.\n\n`hashtype` defaults to `sha256`\n\n`salt` defaults to `url64(32)`\n\n\n\n### .testSecret()\n\n`testSecret(salt, secret, shadow[, hashtype ])`\n\n```javascript\nsecretutils.testSecret('rVhp3Lb7WktdzC0DY9TZtHOOVtdZVWeMCv6YLKizaWI', \"secret\", 'e26f053d55a744e823f37d1caacd9bb4c082f4ec09fe891e60890f8f8505882c');\n// true\n```\n\nGiven a salt, secret, shadow (and hashtype), determine if the secret matches the shadow.\n\n`hashtype` defaults to `sha256`\n\nreturns `true` or `false`\n\n### .genSalt()\n\n`genSalt(len)`\n\n```javascript\nsecretutils.genSalt(32);\n// '1cCk4GzgSDjbuFSRHOrte5_WHW02oYQwaxetY72UxPc'\n```\n\nAlias of `.url64(len)`\n\n### .url64()\n\n`url64(len)`\n\n```javascript\nsecretutils.url64(32);\n// '1cCk4GzgSDjbuFSRHOrte5_WHW02oYQwaxetY72UxPc'\n```\n\nCreates a url-safe base64 string with a given entropy\n\nNOTE that a length of 96 bytes would become a 128-char string\n\nSource:\n\n```javascript\ncrypto.randomBytes(len || 32)\n  .toString('base64')\n .replace(/\\+/g, '-')     // Convert '+' to '-'\n .replace(/\\//g, '_')     // Convert '/' to '_'\n .replace(/=+$/, '')      // Remove ending '='\n ;\n```\n\n### .random()\n\n`random(len[, encoding])`\n\n```javascript\nsecretutils.random(32);\n// <Buffer ce ef 12 c3 47 a9 98 88 1f ... >\n```\n\nGenerate a securely random `Buffer` with `len` bytes of entropy, optionally encoded as a string.\n\n### .int()\n\n`int(min, max)`\n\n```javascript\nsecretutils.int(1, 6);\n// 1\n```\n\nGenerate a securely random 48-bit integer.\n\n### .hashsum()\n\n`hashsum(hashtype, str)`\n\n```javascript\nsecretutils.hashsum('sha1', 'e26f053d55a744e823f37d1caacd9bb4c082f4ec09fe891e60890f8f8505882c' + 'secret');\n// 'a0d281586a74a2bc49414c683b5729aa39c6204b'\n```\n\nReturn the hash of a given string. Useful for short strings, not for large buffers.\n\nSource:\n\n```javascript\nreturn require('crypto').createHash(hashtype).update(val).digest('hex');\n```\n\n### .sha1sum()\n\n`sha1sum(str)`\n\n```javascript\nsecretutils.sha1sum('e26f053d55a744e823f37d1caacd9bb4c082f4ec09fe891e60890f8f8505882c' + 'secret');\n// 'a0d281586a74a2bc49414c683b5729aa39c6204b'\n```\n\nReturn the sha1sum of a given string. Useful for short strings, not for large buffers.\n\nSource:\n\n```javascript\nreturn require('crypto').createHash('sha1').update(val).digest('hex');\n```\n\n### .sha256sum()\n\n`sha256sum(str)`\n\n```javascript\nsecretutils.sha256sum('e26f053d55a744e823f37d1caacd9bb4c082f4ec09fe891e60890f8f8505882c' + 'secret');\n// 'b81efbad017cbe4f785fb9603cc732d5f0263b34edc1e37f2cb13e13aa0f392b'\n```\n\nReturn the sha1sum of a given string. Useful for short strings, not for large buffers.\n\nSource:\n\n```javascript\nreturn require('crypto').createHash('sha256').update(val).digest('hex');\n```\n\n\n### .alphanum()\n\n`alphanum(len)`\n\n```javascript\nsecretutils.alphanum(16);\n// ktp827asite9kp7x\n```\n\nReturn an alphanumeric (A-Za-z0-9) string (insecure, using `Math.random()`).\n\nWhy?\n====\n\nMost of the `crypto` functions are built on a stream-esque API,\nbut many of the common use cases for crypto involve very short strings.\n\n`sha1sum(str)` is simply easier to read (and write) at-a-glance\nthan `require('crypto').createHash('sha1').update(val).digest('hex');`\n\nRemoving a minor annoyance, that's all.\n\nThanks\n======\n\nCode snatched from\n\n* `crypto-rand`\n* `urlsafe-base64`\n","maintainers":[{"email":"coolaj86@gmail.com","name":"coolaj86"}],"time":{"modified":"2022-06-26T17:12:39.309Z","created":"2014-10-13T22:06:42.436Z","1.0.0":"2014-10-13T22:06:42.436Z","1.0.1":"2014-10-13T22:10:48.757Z","1.0.2":"2014-10-14T18:17:38.076Z","2.0.0":"2015-07-31T00:38:16.673Z"},"homepage":"https://github.com/coolaj86/secret-utils","keywords":["crypto","hashsum","md5sum","shasum","sha1sum","sh256sum","sha384sum","sha512sum","secret","password","passphrase","shadow","hash","string","int","integer","number","range"],"repository":{"type":"git","url":"git://github.com/coolaj86/secret-utils.git"},"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"https://coolaj86.com/"},"bugs":{"url":"https://github.com/coolaj86/secret-utils/issues"},"license":"Apache2","readmeFilename":"README.md"}