密码加密的方式有哪些
密码加密的方式有:1、利用对称加密算法(例如3DES、AES)进行加密,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥;2、使用单向HASH算法(例如MD5、SHA1)进行密码,但无法通过计算还原出原始密码;3、使用特殊的单向HASH算法进行密码;4、使用PBKDF2算法进行加密;5、使用BCrypt算法进行加密;6、用SCrypt算法进行加密。
本教程操作环境:windows7系统、DELL G3电脑
作为一名Web开发人员,我们经常需要与用户的帐号系统打交道,而这其中最大的挑战就是如何保护用户的密码。密码是一个网站系统最重要的护盾,如果把网站系统比作城堡,那密码就是城门。关于如何安全的存储密码以及使用何种算法总是有很多的争论:MD5、SHA1,SHA256、PBKDF2,Bcrypt、Scrypt、Argon2、明文??
常见的7种密码加密方式
我们该采用什么方式来保护用户的密码呢?以下几种方式是常见的密码保存方式:
算法 | 特点 | 有效破解方式 | 破解难度 | 其它 |
---|---|---|---|---|
对称加密 | 可以解密出明文 | 获取密钥 | 中 | 需要确保密钥不泄露 |
单向HASH | 不可解密 | 碰撞、彩虹表 | 中 | |
特殊HASH | 不可解密 | 碰撞、彩虹表 | 中 | 需要确保“盐”不泄露 |
Pbkdf2 | 不可解密 | 无 | 难 | 需要设定合理的参数 |
BCrypt | 不可解密 | 无 | 难 | 需要设定合理的参数 |
SCrypt | 不可解密 | 无 | 难 | 需要设定合理的参数 |
Argon2 | 不可解密 | 无 | 难 |
1、使用对称加密算法来保存
使用情况: ★★☆☆☆
比如3DES、AES等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好的方式。
2、使用MD5、SHA1等单向HASH算法保护密码
使用情况: ★★★☆☆
使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。
3、特殊的单向HASH算法
使用情况: ★★★☆☆
由于单向HASH算法在保护密码方面不再安全,于是有些公司在单向HASH算法基础上进行了加盐、多次HASH等扩展,这些方式可以在一定程度上增加破解难度,对于加了“固定盐”的HASH算法,需要保护“盐”不能泄露,这就会遇到“保护对称密钥”一样的问题,一旦“盐”泄露,根据“盐”重新建立彩虹表可以进行破解,对于多次HASH,也只是增加了破解的时间,并没有本质上的提升。
4、PBKDF2
使用情况: ★★★★☆
该算法原理大致相当于在HASH算法基础上增加随机盐,并进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使得建表和破解的难度都大幅增加。使用PBKDF2算法时,HASH算法一般选用sha1或者sha256,随机盐的长度一般不能少于8字节,HASH次数至少也要1000次,这样安全性才足够高。一次密码验证过程进行1000次HASH运算,对服务器来说可能只需要1ms,但对于破解者来说计算成本增加了1000倍,而至少8字节随机盐,更是把建表难度提升了N个数量级,使得大批量的破解密码几乎不可行,该算法也是美国国家标准与技术研究院推荐使用的算法。
PBKDF2 已经存在很长时间了,像之前文章讨论的一样,它有点过时了:轻松的在多核系统(GPU)上实现并行,这对于定制系统(FPGA/ASIC)来说微不足道。
5、BCrypt
使用情况: ★★★★☆
BCrypt 在1999年就产生了,并且在对抗 GPU/ASIC 方面要优于 PBKDF2,但是我还是不建议你在新系统中使用它,因为它在离线破解的威胁模型分析中表现并不突出。 尽管有一些数字加密货币依赖于它(即:NUD),但它并没有因此获得较大的普及,因此,FPGA/ASIC 社区也并没有足够的兴趣来构建它的硬件实现。 话虽如此,Solar Designer(OpenWall)、Malvoni 和 Knezovic(萨格勒布大学)在 2014 年撰写了一篇论文,这篇文章描述了一种混合使用 ARM/FPGA 的单片系统来攻击该算法。
6、SCrypt
使用情况: ★★★★☆
SCrypt 在如今是一个更好的选择:比 BCrypt设计得更好(尤其是关于内存方面)并且已经在该领域工作了 10 年。另一方面,它也被用于许多加密货币,并且我们有一些硬件(包括 FPGA 和 ASIC)能实现它。 尽管它们专门用于采矿,也可以将其重新用于破解。
7、Argon2
使用情况: ★★★★★
Argon2 基于 AES 实现,现代的 x64 和 ARM 处理器已经在指令集扩展中实现了它,从而大大缩小了普通系统和攻击者系统之间的性能差距,
Argon2 有三个主要的版本:
- Argon2i 是对抗侧信道攻击的最安全选择,Argon2i 使用与数据无关的内存访问,这是密码哈希的首选方法,Argon2i 对内存进行了更多的传递,以防止权衡攻击的发生。
- Argon2d 是抵抗 GPU 破解攻击的最安全选择,并且Argon2 在 2015 年 7 月赢得了密码哈希竞赛。Argon2d 使用依赖数据的内存访问,这使得它很适合用于加密数字货币和工作量证明的应用程序,而不会受到侧信道定时攻击的威胁。
- Argon2id 在内存第一次迭代的前半部分充当 Argon2i,其余部分则充当 Argon2d。因此,基于时间、 空间的平衡,它既提供了侧信道攻击保护也节约了暴力开销。
如果你担心侧信道攻击(例如:恶意数据缓存加载/幽灵漏洞,它允许通过基于缓存的侧信道读取同一硬件上其他正在运行的进程的私有内存数据),你应该使用 Argon2i,否则使用 Argon2d。 如果你不确定或你对混合方法感到满意,你可以使用 Argon2id 来获得两个方面的优势。
源代码可以在 Github 上获得,使用兼容 C89 的 C 语言编写,并在知识共享许可协议下获取许可,并且可以在大多数 ARM、x86 和 x64 架构的硬件上编译。
…
温馨提醒:
在2019 年之后,就有相关专家提出建议尽量不要使用 PBKDF2 或 BCrypt,并强烈建议将 Argon2(最好是 Argon2id)用于最新系统。而Scrypt 是当 Argon2 不可用时的不二选择,但要记住,它在侧侧信道泄露方面也存在相同的问题。
更多相关知识,请访问常见问题栏目!
以上是密码加密的方式有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undress AI Tool
免费脱衣服图片

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

设备管理器显示感叹号通常因硬件连接问题或驱动异常导致,解决方法如下:1.检查设备连接与供电,确保插拔牢固并使用带电HUB或更换接口;2.更新或回滚驱动程序,通过设备管理器或官网获取最新驱动;3.清理旧设备残留信息,卸载隐藏设备并重新识别;4.谨慎修改注册表,备份后删除异常项;若仍无法解决可尝试重装系统。

错误代码30183-27通常由权限不足或系统冲突引起。1.以管理员身份运行安装程序,并检查下载文件是否被锁定;2.清理系统的临时文件夹(%temp%、temp、AppData\Local\Temp)并释放磁盘空间;3.暂时关闭杀毒软件或防火墙以防干扰安装;4.使用微软官方修复工具如MicrosoftSupportandRecoveryAssistant或Office部署工具(ODT)进行排查和安装;5.尝试重启计算机后再安装。按照上述步骤依次处理,多数情况下可解决该问题。

Windows更新错误0x80070017通常由系统文件、缓存或磁盘错误引起,并非一定是硬盘损坏。解决方法如下:1.使用SFC和DISM工具修复系统文件,依次运行sfc/scannow及DISM命令;2.清除WindowsUpdate缓存,停止服务后删除SoftwareDistribution文件夹内容;3.运行chkdsk检查磁盘错误,可在图形界面或命令提示符中执行;4.更新或回滚驱动程序,尤其是存储控制器和硬盘驱动。多数情况下通过前三种方法即可解决,若仍无法处理,则可能是硬件问题或需重装系统

checkThetergergerSettingStoensureTheTheTheyEnabledand和correctlyConfiguredWhtherightDate,time,andRecurrence; 2. verifyTheActionSettings,包括correctprogram/scriptspathsandpathsandpathsandproper internterpreterusage,尤其是forscriptssissississississississusingpowershell.exewith.exewith-exewith-exewith-execiutionpolicelyb

手机打电话没声音的原因有:硬件问题(扬声器损坏、听筒孔堵塞、连接器接触不良)、软件问题(音量设置太低、静音模式开启、系统故障)、网路问题(信号强度弱、网路拥塞)、其他原因(蓝牙耳机已连接、应用程序干扰)。解决方案包括:检查硬件、调整音量设置、关闭静音模式、重启手机、更新系统、断开蓝牙耳机、卸载有问题的应用程序,如果仍无法解决,请联系技术支持。

隐藏系统托盘图标不影响程序运行,仅移除视觉显示;2.彻底清理需通过任务管理器禁用非必要启动项;3.根治杂乱须卸载不用软件并养成安装时取消捆绑勾选的习惯,这样才能实现视觉清爽与资源优化的双重目标。

Checkifsilentmodeisenabled—flipthering/silentswitchoniPhoneoradjustvolumesettingsonAndroidtoensuretheringerison.2.VerifyDoNotDisturborFocusModeisn’tactiveandreviewsettingstoallowcallsfromcontacts.3.Confirmthecallerisn’tblockedandcallforwardingisdisab

遇到Windows更新错误0x800f081f的解决方法包括:1.使用DISM和SFC工具修复系统文件,运行DISM/Online/Cleanup-Image/ScanHealth、DISM/Online/Cleanup-Image/RestoreHealth和sfc/scannow命令;2.检查并重置更新源设置,通过组策略编辑器确认“指定IntranetMicrosoft更新服务位置”配置,或重置WindowsUpdate服务与缓存;3.手动下载并安装所需组件,如.NETFramework或M