mosquitto-auth-plug
PBKDF2加密
PBKDF2其实就是选择一种哈希算法,把密码加盐后经过多次迭代计算进行加密。当然肯定是不可逆的,可以防止碰撞破解,迭代次数越多越安全。
mosquitto-auth-plug使用了PBKDF2加密,编译后得到的np可执行程序可以进行加密:(下面假设密码为admin)
./np -p admin
得到加密密码:
PBKDF2$sha256$901$qiCmZmc2ZKEJkEaL$7Nw6lpv9G0IoEgxcTfEbx4ajtMQD3shC
返回的密码使用$符号分隔,最前为PBKDF2标识,默认使用sha256哈希算法,进行了901次迭代加密,然后是使用openssl生成随机数经过BASE64的字符串也就是盐,最后是真正PBKDF2生成的Key。
把这个密码存储到数据库以后,当用户使用用户名和密码登录上来时,auth-plug会根据用户名查询数据库得到密码,然后根据$分割标识的定义来进行加密密码,最后把加密后的密码跟数据库的密码进行对比就知道用户的密码是否正确。