filezilla server的用户密码生成方法

我们知道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');
const fx28 = require('fx28-node');//base64去padding,需要npm安装下

function filezillapassword (upw){
	let buf=randomBytes(32);
	let derivedKey=pbkdf2Sync(upw, buf, 100000, 32, 'sha256');
	return {"hash":fx28.encode(derivedKey),"salt":fx28.encode(buf)};
	}

console.log(filezillapassword("HelloWordl!"));

运行输出如下:
在这里插入图片描述
这样就可以得到符合filezilla规范的hash和salt,当然要把相关user信息补充完整才可以在users.xml里新增或替换用户信息,需要了解xml格式文件的一些处理方法,熟悉xml格式的同学可以用xmldom直接处理user节点,熟悉json格式的同学可以用xml2js来通过json转换下处理,都可以实现目标,就不在这篇文章里赘述了。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值