专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

密码加密的方式有哪些

来源:小易整编  作者:小易  发布时间:2024-03-12 10:12
摘要:密码加密的方式有:1、利用对称加密算法(例如3des、aes)进行加密,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥;2、使用单向hash算法(例如md5、sha1)进行密码,但无法通过计算还原出原始密码;...

密码加密的方式有: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算法保护密码

使用情况: ★★★☆☆

  使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。

HASH算法        

明文

密文

无法还原        

密文

明文

3、特殊的单向HASH算法

使用情况: ★★★☆☆

  由于单向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)来说微不足道。

多次HASH算法        

随机盐+明文

密文

无法还原        

密文

明文

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 不可用时的不二选择,但要记住,它在侧侧信道泄露方面也存在相同的问题。

更多相关知识,请访问常见问题栏目!

以上就是密码加密的方式有哪些的详细内容,更多请关注易企推科技其它相关文章!


本文地址:网络知识频道 https://www.hkm168.com/jiqiao/1146883.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


网络知识
小编:小易整编
相关文章相关阅读
  • c语言的输入函数有哪些

    c语言的输入函数有哪些

    c语言的输入函数有:1、scanf()函数、从标准输入stdin读取格式化输入;2、getchar()函数,从标准输入stdin获取一个字符;3、gets()函数,从标准输入stdin读取一行;4、getch()函数,从stdin流中读取字...

  • 因特网能提供的最基本服务有哪些

    因特网能提供的最基本服务有哪些

    因特网能提供的最基本服务有:1、www服务;2、电子邮件e-mail服务;3、远程登录telnet服务;4、文件传输ftp服务;5、usenet网络新闻组服务;6、电子公告牌服务。本教程操作环境:windows7系统、DellG3电脑。因...

  • 前端开发需要哪些软件

    前端开发需要哪些软件

    编程一般用的软件有:1、hbuilder;2、sublimetext;3、webstorm;4、phpstudy;5、dreamweaver;6、visualstudio;7、phpstorm;8、notepad等等。孔子说,“工欲善其...

  • 修改wifi密码的网址是什么

    修改wifi密码的网址是什么

    修改wifi密码的网址就是wifi路由器管理页面的登录地址,通常又被叫做路由器ip;不同的wifi路由器的网址是不同的,可以在路由器底部标贴中查看到设置网址信息。常见的网址有:“192.168.0.1”、“192.168.1.1”等等。本教...

  • Java 中的各种锁有哪些?

    Java 中的各种锁有哪些?

      Java中15种锁的介绍  在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:  公平锁/非公平锁  可重入锁/不可重入锁  独享锁/共享锁  互斥锁/读写锁  乐观锁...

  • java8新特性有哪些

    java8新特性有哪些

    java8新特性有:1、lambda表达式;2、方法引用;3、默认方法;4、新编译工具;5、streamapi;6、datetimeapi;7、option;8、nashornjavascript引擎。Java8新增了非常多的特性...

  • 网络安全相关内容有哪些

    网络安全相关内容有哪些

    网络安全相关内容有:1、网络攻击;2、信息安全;3、防抵赖问题;4、网络内部安全防范;5、网络防病毒;6、网络数据备份与灾难恢复等。一、网络攻击1、对网络的攻击大致可以分为两类:服务供给和非服务攻击。从攻击的手段可以分为8类:系统入侵类攻击...

  • 类选择器有哪些类型

    类选择器有哪些类型

    类选择器类型有基本类选择器、多类选择器、层次类选择器、子元素类选择器、相邻兄弟类选择器、通用兄弟类选择器、属性值类选择器和否定类选择器等。详细介绍:1、基本类选择器,使用点号开头的选择器,表示选取具有指定类名的元素;2、多类选择器,使用多个...

  • 周排行
  • 月排行
  • 年排行

精彩推荐