Files
js-scripts/crypt.js
2025-01-26 23:51:32 +08:00

36 lines
1.0 KiB
JavaScript
Executable File

#!/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();