TencentBlueKing / bk-user

蓝鲸用户管理是蓝鲸智云提供的企业组织架构和用户管理解决方案,为企业统一登录提供认证源服务。
MIT License
59 stars 66 forks source link

数据源用户密码支持加盐加密 #1283

Closed narasux closed 1 year ago

narasux commented 1 year ago

目前使用 bluekrill EncryptField,但是是对称加密,应该调整为 hash 加密,支持 sha256 & sm3

注:需要为蓝鲸 crypto 库贡献 sm3 的实现

bk crypto 不需要支持加盐,使用标准 sm3 即可,加盐相关封装在 bkuser 实现

nannan00 commented 1 year ago

可以考虑复用Django 本身内置的用户密码框架:https://docs.djangoproject.com/en/4.2/topics/auth/passwords/

nannan00 commented 1 year ago

sm3对应的应该是MD5和sha1、sha256等弱哈希算法,需要使用对应的慢哈希算法,比如pbkdf2、bcrypt、scrypt等

比如Django默认密码加密是使用 pbkdf2_sha256

narasux commented 1 year ago

hashlib.pbkdf2_hmac 仅支持 hashlib 内置的 hash 算法,若要支持 sm3,需要参考实现 pbkdf2_hmac

ref: hashlib.pbkdf2_hmac