feat: add crypt.js

This commit is contained in:
2025-01-26 23:51:32 +08:00
parent d4242171d1
commit 4a4e4c53b1
2 changed files with 36 additions and 0 deletions

35
crypt.js Executable file
View File

@@ -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();