• sha1生成一个160bit的结果,通常用40位的16进制字符串表示
  • md5生成一个128bit的结果,通常用32位的16进制字符串表示
  • 注意:哈希算法又称为摘要算法,它生成的是固定长度的不可逆的混杂字符串。不要与加密算法混为一谈,因为加密对应着解密。而哈希算法很难很难解密。
  • SHA256和SHA512,不过越安全的算法越慢,而且摘要长度更长

通常为了保护用户的隐私,我们不会选择直接将明文的密码存入数据库,因为一但数据库泄露,用户的个人信息将全部丢失。

通常会对密码进行MD5,SHA1等方式哈希后存入数据库。

但是这样数据库被盗后,黑客虽然不能暴力破解密码,但是黑客可以通过对用户常见密码进行哈希,用得到的值对比仍然会泄露。

这里就提到另一种方法“加盐”

我们不单单对密码进行加密,而是将密码+“特性字符串”的集合进行加密。大大增加了安全性。

import hashlib# shal加密
shal = hashlib.sha1()  # 创建一个实例
text_shal = 'hashlib_shal'  # 用于加密的字符串,可采用动态
shal.update(text_shal.encode('utf-8'))  # 传入字符串
text_shal = shal.hexdigest()  # 处理字符串
# 简写
# text_shal = hashlib.sha1('hashlib_shal'.encode('utf-8')).hexdigest()# MD5加密
md5 = hashlib.md5() # 用于MD5处理的字符串
text_md5 = 'hashlib_md5' # 生成一个MD5处理的实例
md5.update(text_md5.encode('utf-8'))  # 将上面字符串传入
text_md5 = md5.hexdigest() # MD5处理之后字符串 print(md5[8:-8]) # python处理后的MD5有256位,只取中间的128位
# 简写
# text_md5 = hashlib.md5('hashlib_md5'.encode('utf-8')).hexdigest()

Python中hashlib.sha1()和hashlib.MD5()哈希算法的区别相关推荐

  1. python中复制、浅层拷贝、深层拷贝的区别

    python中复制.浅层拷贝.深层拷贝的区别 一.学习要点: 1.python中的复制与拷贝的区别 2.python中浅层拷贝与深层拷贝的区别 二.代码: import copy a=[1,2,3,4 ...

  2. Python中*args、**args到底是什么、有啥区别、怎么用

    参考: 1.Python中*args.args到底是什么.有啥区别.怎么用 2.*args和kwargs 英译汉: argument:n. 争论,争吵:论据,理由:辩论,讨论:自变数:主词,受词:&l ...

  3. Python 中的url,Base64和MD5编码解码的使用

    1.encode()和decode() 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes(字节). 所以当我们在Python中进行加密操作的时候,要确保 ...

  4. python中集合set,字典dict和列表list的区别以及用法

    python中set代表集合,list代表列表,dict代表字典 set和dict的区别在于,dict是存储key-value,每一个key都是唯一的,set相对于dict存储的是key,且key是唯 ...

  5. [转载] python中pprint模块详解——print()和pprint()两者的区别

    参考链接: pprint:Python中的数据漂亮打印方法pprint pprint的英文全称Data pretty printer,顾名思义就是让显示结果更漂亮. print()和pprint()都 ...

  6. Python中zip()、zip(*zipped)、*zip()的用法及区别

    Python中zip().zip(*zipped).*zip()的用法及区别

  7. python中os.system、os.popen、subprocess.popen的区别

    最近项目中需要在python中执行shell脚本,以下解释使用os.system. os.popen和subprocess.popen的区别: 1.os.system 该函数返回命令执行结果的返回值, ...

  8. python中随机整数生成random.randint和random.randrange的区别

    在python中,通过导入random库,就能使用randint 和 randrange这两个方法来产生随机整数.那这两个方法的区别在于什么地方呢?让我们一起来看看! 区别1--例子: randint ...

  9. python中pprint模块详解——print()和pprint()两者的区别

    pprint的英文全称Data pretty printer,顾名思义就是让显示结果更漂亮. print()和pprint()都是python的打印模块,功能基本一样,唯一的区别就是pprint()模 ...

  10. java中的加密与安全——常见哈希算法总结,对称式加密及不对称式加密

    目录 一.编码算法 1.URL编码 1.1.概念 1.2.代码示例(编码和解码)对URL中的中文进行编码 对URL中的中文进行解码 2.Base64编码 2.1.基本概念 2.2. 解码内容: 2.3 ...

最新文章

  1. C#机房重构-总结(一)
  2. java上传文件图片
  3. 解决递归中的重复计算问题
  4. hdu_5878_I Count Two Three(预处理)
  5. Java filter拦截器的使用
  6. CodeForces - 1332D Walk on Matrix(构造)
  7. 每日英语:Why Sit Up Straight?
  8. Redmi K50评测:顶级2K屏加持 无愧全价位焊门员
  9. python字符串偏移量_字符串掩码和带正则表达式的偏移量
  10. html 四个字与两个字,2014好听的两个字和四个字的qq网名大全精选
  11. React使用iconfont阿里巴巴矢量图库
  12. 参赛【GGJ2022】回顾,作品--双生共合
  13. nodejs mysql knex_nodejs之knex模块从安装到使用
  14. FlatBuffers vs Protocol Buffers
  15. 动圈话筒,电容话筒,驻极体话筒的区别
  16. 互连网、互联网、因特网、万维网、局域网、以太网 区别
  17. 追踪社保基金操盘者的足迹
  18. 树莓派Pico C/C++语言开发
  19. Android SDK 完整版
  20. 博物馆逛不完、记不住?扩展现实(XR)技术来帮你!

热门文章

  1. 开帖记录每天工作学习日常
  2. Python基础 模块化编程(模块的导入)
  3. html+css画一个潇洒哥
  4. 传奇人物郭盛华,他的人生像开挂一样?网友:望尘莫及
  5. dhcp authoritative参数作用
  6. 【附源码】手写一个Ico生成器
  7. 如何解决Unity高版本使用EasyTouch5的问题
  8. 2023杭州电子科技大学计算机考研信息汇总
  9. 7.20 - 每日一题 - 408
  10. CentOS配置静态IP地址