我们知道filezilla是一款开源免费的FTP软件,有客户端和服务器版本,服务器使用users.xml来存放用户密码的hash值,虽然filezilla server提供了管理界面,但是如果仅能从这个管理界面来创建更改用户密码,那么使用会比较不便,当然filezilla server还提供了命令行工具Filezilla-server-crypt用来生成xml里用户password节点里的几个参数,不过集成到其他应用里涉及到系统调用,也不是很方便,那么能否直接通过算法生成xml里需要的密码的salt和hash呢?在filezilla论坛里学习了下,还真找到了算法:具体就是随机生成32字节的salt,hash算法采用PBKDF2-HMAC-SHA256 ,密钥长度32,迭代次数10万,得到的hash值以base64不带填充字符的格式存放到users.xml即可,salt也是要以base64不带填充字符的格式存放到users.xml。
以下nodejs来实现这个hash算法:
//filezillapasswordSync.js
const {
pbkdf2Sync,randomBytes } = require('node:crypto');