23、安全技术:密码哈希、JWT 与加密方法全解析

安全技术:密码哈希、JWT 与加密方法全解析

1. 密码安全基础

1.1 胡椒(Pepper)的使用

在处理密码安全时,胡椒是一个重要的概念。胡椒是在初始化结构体时传入的随机字符串切片中的一个随机元素。它无需存储在数据库中,其主要作用是增加潜在攻击者暴力破解的难度。例如,在我们的示例中,胡椒可使攻击者的暴力尝试次数增加五倍。

虽然可以增加胡椒的数量,但从基准测试来看,即使使用 1000 个胡椒,比较哈希值的时间也仅约为 1.5 毫秒。不过,我们需要注意这些基准测试是在单操作环境下进行的,而实际服务器会同时处理多个请求。而且,比较 1000 个胡椒的哈希值所需时间是比较 100 个的 10 倍,是比较 10 个的 100 倍。

生成一个哈希值需要 4634 纳秒,假设允许使用 63 个字符,密码长度为 11 个字符,那么需要生成的排列组合最多可达 6.2e19(即 62 万亿亿)个。对于单个 CPU 来说,暴力破解这么多哈希值大约需要 900 万年。

1.2 字典攻击

并非所有密码都很复杂,许多密码容易受到字典攻击。字典攻击不像暴力破解那样尝试所有可能的排列组合,而是集中攻击那些最有可能成功的密码。这些字典通常来自之前被泄露的密码数据库,因为人类使用密码具有一定的可预测性,常常会重复使用相同的密码。例如,密码 “HelloWorld2” 已经存在于包含 1400 万个其他密码的字典中,使用 “John the Ripper” 工具破解其加盐哈希值仅需 2.4 秒。

1.3 添加胡椒增强安全性

为了防止用户使用简单密码,我们可以制定良好的密码策略,如规定最小长度、大小写混合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值