Golang实现Python Django2密码算法pbkdf2_sha256(无损迁移Django项目)

Golang实现Python Django2密码算法pbkdf2_sha256

0. 说明

系统环境

go version go1.14.3 darwin/amd64

因为项目需要从Python Django框架重构为Golang项目,为了保证用户数据不丢失,所以密码算法使用与Django框架相同的pbkdf2_sha256加密算法。
以下代码根据GitHub开源项目github.com/alexandrevicenzi/unchained/修改而成,有兴趣的可以翻阅项目代码。

1. 简单的加密算法分析

直接拿出一个经过pbkdf2_sha256加密后的密钥

pbkdf2_sha256$180000$9v62SVRUKPTf$igFByaMbYXhOh7p375LDdo2GYrUV9RbqdTaR6jbhrKg=

密钥一共分为4个部分,分别是加密算法名称加密迭代次数盐(salt)base64编码,每一个部分都由美元$符号分割,由此我们解析上面密钥的数据。

  • 加密算法名称:pbkdf2_sha256
  • 加密迭代次数:180000
  • 盐:9v62SVRUKPTf
  • Base64编码:igFByaMbYXhOh7p375LDdo2GYrUV9RbqdTaR6jbhrKg=

由于pbkdf2_sha256属于单向加密算法(即无法通过密钥反推原始密码),所以我们要校验密码需要用同样的方式来加密,最终将两个加密密钥对比,如果相同则认为密码正确,整体流程如下所示。

pbkdf2_sha256算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值