浅谈密码加密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 浅谈密码加密


密码加密


我们的项目如果是使用flask框架开发的话,那么可以使用flask中提供的安全模块,将密码进行加密。这样做的好处是保障用户信息安全,要不然公司内任何一个程序员都可以从数据库查询到相关的私密敏感信息,如果发生泄漏,后果不堪设想。这只是一种小概率事件,那么大概率事件是什么呢?如果网站做的足够大,用户群体十分庞大,那么肯定会有一些不法分子会入侵,攻破网站盗取数据啊,如果我们加密之后,是不是就安全多了呢?

你一开始想到的就是哈希,对不对?对,但是不全面。经过老师的指导,我查了相关的资料,发现了还要加盐......首先声明,这里的盐并不是吃的食用盐,而是盐值,说白了就是一段随机的字符串。那么加盐哈希怎么用呢?简单的来说就是将这个随机的字符串混入密码中,然后再通过哈希加密。这在工作中可是常用的,也是相对来说安全的一种方式。作为拓展内容,大家了解即可。如果想深入探究,那么我推荐大家看一篇博文,写的非常的详细,但是有点难理解,链接地址是:

http://blog.jobbole.com/61872/#toc1

你也许会有疑问,哈希都加密成那个样子了,难道还不安全?你还说对了,还真不安全,作为拓展内容给大家介绍几种出名且有效的破解哈希的方法,大家了解即可:

字典攻击这种方式简单来说就是靠猜,哈哈哈,服不服?关键是怎么猜?也简单,就是准备一个字典文件。这个字典文件可不是简单的字典文件,它包含了单词、短语、常用密码以及其他可能用作密码的字符串,然后这些都是经过哈希过的。就是拿这个哈希值的字典文件去和你的密码哈希比对,一样,那么就是这个密码了呗。


字典文件的构成是从大段文本中分解出的单词,甚至还包括一些数据库中真实的密码。然后还可以对字典文件进行更进一步的处理使它更有效,比如把单词中的字母替换为它们的“形近字”(hello变为h3110)


暴力攻击:顾名思义,就是简单粗暴的方式,也是靠猜。但是这一种方式需要大量的计算,太耗时,但是它一定会成功,只是成功的过程需要几百年,甚至更长......


暴力攻击会尝试每一个在给定长度下各种字符的组合。这种攻击会消耗大量的计算,也通常是破解哈希加密中效率最低的办法,但是它最终会找到正确的密码。因此密码需要足够长,以至于遍历所有可能的字符串组合将耗费太长时间,从而不值得去破解它。


查表法


查表法对于破解一系列算法相同的哈希值有着无与伦比的效率。主要的思想就是预计算密码字典中的每个密码,然后把哈希值和对应的密码储存到一个用于快速查询的数据结构中。一个良好的查表实现可以每秒进行数百次哈希查询,即使表中储存了几十亿个哈希值。


反向查表法


这种方法可以使攻击者同时对多个哈希值发起字典攻击或暴力攻击,而不需要预先计算出一个查询表。

首先攻击者构造一个基于密码-用户名的一对多的表,当然数据需要从某个已经被入侵的数据库获得,然后猜测一系列哈希值并且从表中查找拥有此密码的用户。通常许多用户可能有着相同的密码,因此这种攻击方式也显得尤为有效。


彩虹表


彩虹表是一种在时间和空间的消耗上找寻平衡的破解技术。它和查表法很类似,但是为了使查询表占用的空间更小而牺牲了破解速度。因为它更小,于是我们可以在一定的空间内存储更多的哈希值,从而使攻击更加有效。能够破解任何8位及以下长度MD5值的彩虹表已经出现了。


看到没有,方法还不止一种,现在你还认为哈希加密安全吗?



SHA256


前面都是一些了解内容,我们还是回归正传,比如咱们上一个网站里面用到的密码加密是什么啊?怎么用的啊?代码是什么呢?是不是忘记了,很正常,人要是学习了不忘记,那是流氓,o(∩_∩)o 哈哈,正常人都是学习了会忘记,而且遵循那个什么什么曲线,(悄悄告诉你,那叫艾宾浩斯遗忘曲线)管它是什么,总之就是学了会忘,忘了还得学,所以,再带着大家回忆一下:


1user.password = password #密码的加密处理
 2
 3    #使用@property装饰的方法,可以当成属性来使用,比如: print(user.password)
 4     @property
 5     def password(self):
 6         raise AttributeError("当前属性不可读")
 7
 8    #@password.setter给password方法,加了一个设置方法, 比如: user.password = 'haha'
 9     @password.setter
10     def password(self, value):
11        #使用了系统的generate_password_hash方法,使用的是sha256算法加密
12         self.password_hash = generate_password_hash(value)
13
14     def check_passowrd(self, password):
15        #系统提供的校验密码的方法,check_password_hash,传递密文和明文,返回的是True或者False
16         return check_password_hash(self.password_hash, password)


  1. 目的: 使用flask中提供的安全模块,将密码进行加密
  2. 注意点
  1. @property装饰方法之后,可以被属性使用
  2. @属性.setter,给方法增加一个设置方式
  3. generator_password_hash() 系统提供的加密方法
  4. check_password_hash() 系统提供的密码校验方法


上面是前面的笔记,大家可以结合给的代码块中的注释和代码进行回顾学习。这一篇的小科普就到此为止了,咱们江湖见.....


相关文章
|
5月前
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
3月前
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
107 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
3月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
51 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
3月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
234 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
4月前
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
156 5
|
4月前
|
安全 数据安全/隐私保护 Python
情书也能加密?Python AES&RSA,让每一份数据都充满爱的密码
【9月更文挑战第8天】在这个数字化时代,情书不再局限于纸笔,也可能以电子形式在网络中传递。为了确保其安全,Python提供了AES和RSA等加密工具,为情书编织爱的密码。首先,通过安装pycryptodome库,我们可以利用AES对称加密算法高效保护数据;接着,使用RSA非对称加密算法加密AES密钥和IV,进一步增强安全性。即使情书被截获,没有正确密钥也无法解读内容。让我们用Python为爱情编织一张安全的网,守护每份珍贵情感。
58 2
|
5月前
|
安全 数据安全/隐私保护 Python
|
5月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
485 0
|
7月前
|
算法 JavaScript 安全
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
70 0