pbkdf2 算法 C语言实现,密码学基础之PBKDF2算法
站点登录需要输入用户名和密码,而密码属于个人敏感数据,应当只保存密码的单向哈希值。简单的哈希值,无法防止彩虹表攻击,使用基于口令的密钥派生算法PBKDF2可以解决这种问题。
PBKDF2 需要以下输入:
哈希算法
密码
盐值
迭代次数
哈希算法:建议选择SHA256或更安全的算法
密码:用户的输入值
盐值:建议最少8个字节,应使用安全的随机数
迭代次数:建议迭代10000次左右,对于性能有特殊要求的可迭代1000次
PBKDF2还有dk_len参数,通常用不到,本文省略。
下面是Python的演示代码:
# Python 3.4+
import hashlib, binascii
def retrieve_data_from_database(user):
"""从数据库获取指定用户密码的PBKDF2哈希值,这里只是演示
"""
data = {'yang': b'e75dfdc937acc5b7fccb2bc4237f75248c5bbe01797f70049be8abf43e55be44'}
return data[user]
def validate_password(user, password):
"""验证密码是否正确
password的PBKDF2哈希值和存储的PBKDF2哈希值比较,相同则验证通过
"""
salt = b'\x7d\xef\x87\xd5\xf8\xbb\xff\xfc\x80\x91\x06\x91\xfd\xfc\xed\x69'
dk = hashlib.pbkdf2_hmac('sha256', password, salt, 10000)
saved_data = retrieve_data_from_database(user)
return binascii.hexlify(dk) == saved_data
def login(user, password):
"""用户登录演示
"""
if not validate_password(user, password):
print('user or password error')
# 其它逻辑
相关文章
参考文献
pbkdf2 算法 C语言实现,密码学基础之PBKDF2算法相关推荐
- php 红包算法,PHP语言:实现微信红包拆分算法
本文主要向大家介绍了PHP语言:实现微信红包拆分算法,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. · 修复最后一个红包输出未保留2位数 · 修复领取的红包金额低于最小红包限制 * 红 ...
- 人工免疫算法c语言实例,毕业设计_蚁群算法模拟系统的设计与实现.doc
J I A N G S U U N I V E R S I T Y 本 科 毕 业 论 文 蚁群算法模拟系统的设计与实现 Ant Colony Simulation System Design and ...
- 【数据结构与算法——C语言版】1. 数据结构与算法简介
概念 数据结构:"一组数据的存储结构" 算法:"操作数据的一组方法" 数据结构是为算法服务的,算法是要作用再特定的数据结构上的. 简言之,在编程实践中,我们可能 ...
- java超级素数算法_计算机二级VB基础之素数算法
众所周知计算机二级VB考试除了考察累加.最值.约数因子以及进制转化之外还会考察素数的算法.那么到底二级VB中的素数算法是怎么样的呢?为此在本文中课课家笔者就为大家简单介绍其含义和具体的算法,并给出相应 ...
- 栅格法路径算法C语言,基于地图栅格与QPSO算法结合的机器人路径规划方法与流程...
本发明属于机器人路径规划领域,提出一种基于地图栅格与QPSO结合的机器人路径规划方法. 背景技术: 移动机器人路径规划是寻找一条无碰撞的可行路径问题的方法.近些年,群智能优化算法逐渐成为移动机器人路径 ...
- 机械臂运动学算法c语言,6轴工业机械臂运动学算法(C++) 六轴机械臂运动学源码 - 下载 - 搜珍网...
6轴工业机械臂运动学算法 6轴工业机械臂运动学算法\.cproject 6轴工业机械臂运动学算法\.project 6轴工业机械臂运动学算法\.settings 6轴工业机械臂运动学算法\.setti ...
- 极值跟踪算法 c语言,快速约束极值子空间跟踪算法_魏志强.pdf
快速约束极值子空间跟踪算法_魏志强 34 4 Vol. 34 No. 4 第 卷第 期 华 北 水 利 水 电 学 院 学 报 2013 8 Journal of North China Instit ...
- 基础密码算法c语言实现,国密SM2密码算法的C语言实现
邢维哲 [摘要] N.Koblitz和V.Miller在1985年各自獨立地提出将椭圆曲线应用于公钥密码系统.SM2椭圆曲线密码算法是国家密码管理局批准的一组算法,在电力自动化通讯中得到了广泛应用.本 ...
- 异或校验算法 c语言程序,C# 异或校验算法
C# 的异或校验算法 直接上代码 public partial class FormCRC : Form { public FormCRC() { InitializeComponent(); } p ...
最新文章
- 求主析取范式与主合取范式
- Swift3的playground中对UI直接测试支持的改变
- VOA,with me
- Symbian编程总结-图形图像篇-打开非Bitmap类型的图像
- java 初级编程题_java基础经典编程题
- LeetCode 153 寻找旋转排序数组中的最小值
- 关于nginx rtmp的一点配置
- JS多维数组转一维数组递归降维-数组扁平化
- c语言 自动答题器,单片机原理作业—电子答题器(课程及设计).doc
- Ant Design vue 表格内换行
- Windows提示:您的许可证即将过期
- ubuntu20.04 noetic 安装 Astra Pro 驱动
- 微信小程序介绍、区别
- Nodejs之解决接口跨域问题
- 计算机夏令营英语怎么说,“夏令营”英语怎么说
- WEB页面SEO —— 网站TDK优化细节
- 2019年帮解BUG,做设计,Android,WEB
- Java算法:回文数
- super()和this()
- Android 折叠屏 适配