Docker本地部署overleaf后,挖掘用户加密逻辑

overleaf的用户信息,保存在mongo数据库的users集合中。

用户密码则存在hashedPassword字段中

 从开源的代码services\web\app\src\Features\Authentication\AuthenticationManager.js第303行可以找到密码加密逻辑。

本地可以通过下面的代码生成overleaf用户密码信息。

npm install bcryptjs
const bcrypt = require('bcryptjs'); // 使用 bcryptjs 模块
const BCRYPT_ROUNDS = 12; // 定义哈希轮数

async function hashPassword(password) {
    try {
        // 生成盐
        const salt = await bcrypt.genSalt(BCRYPT_ROUNDS,'a');
        // 使用盐对密码进行哈希
        const hashedPassword = await bcrypt.hash(password, salt);
        return hashedPassword;
    } catch (error) {
        console.error('Error hashing password:', error);
        throw error;
    }
}

async function exampleUsage() {
	// 定义明文密码
    const plainPassword = '111111';
    console.log('明文密码:', plainPassword);
    // 哈希密码
    const hashedPassword = await hashPassword(plainPassword);
    console.log('Hashed密码:', hashedPassword);
}

// 运行示例
exampleUsage();

通过该功能可实现其它系统与overleaf系统用户信息同步。

只需将用户信息写入mongo的users集合中即可。

补充,还有生成referal_id和_id的代码:

/*生成referal_id*/
const crypto = require('crypto')
function _randomString(length, alphabet) {
		const result = crypto
			.randomBytes(length)
			.toJSON()
			.data.map(b => alphabet[b % alphabet.length])
			.join('')
		return result
}
function generateReferralId() {
	return _randomString(16, TOKEN_ALPHANUMERICS)
}
const TOKEN_LOWERCASE_ALPHA = 'bcdfghjkmnpqrstvwxyz'
const TOKEN_NUMERICS = '123456789'
const TOKEN_ALPHANUMERICS = TOKEN_LOWERCASE_ALPHA + TOKEN_LOWERCASE_ALPHA.toUpperCase() + TOKEN_NUMERICS
const newReferralId = generateReferralId()
console.log(newReferralId)
/*生成_id*/
const { ObjectId } = require('mongodb')
user_id = new ObjectId().toString()
console.log(user_id)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值