diff --git a/.gitignore b/.gitignore index d4777d2..cffe83e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea/ # ---> macOS # General .DS_Store diff --git a/crypt.js b/crypt.js new file mode 100755 index 0000000..448f2f4 --- /dev/null +++ b/crypt.js @@ -0,0 +1,35 @@ +#!/usr/bin/env runjs + +// Reference: +// - https://www.akkadia.org/drepper/SHA-crypt.txt + +requireJAR('maven:commons-codec:commons-codec:1.72.2'); + +var Sha2Crypt = Packages.org.apache.commons.codec.digest.Sha2Crypt; +var UnixCrypt = Packages.org.apache.commons.codec.digest.UnixCrypt; +var Md5Crypt = Packages.org.apache.commons.codec.digest.Md5Crypt; + +var main = () => { + if ($ARGS.length == 0) { + println('[ERROR] Require arguments.'); + return; + } + var keyBytes = __.bytes.from($ARGS[0]).bytes(); + var width = 8; + + println(pad('Unix', width) + UnixCrypt.crypt(keyBytes)); + println(pad('APR1', width) + Md5Crypt.apr1Crypt(keyBytes)); + println(pad('MD5', width) + Md5Crypt.md5Crypt(keyBytes)); + println(pad('SHA256', width) + Sha2Crypt.sha256Crypt(keyBytes)); + println(pad('SHA512', width) + Sha2Crypt.sha512Crypt(keyBytes)); +}; + +function pad(str, width) { + var p = width - str.length + var s = str; + for (var i = 0; i < p; i++) { s += ' '; } + s += ': '; + return s; +} + +main();