这篇文章是讲述 如何通过hashlib 和base64 对字符串进行加密的

hashlib

  1. 强大的hashlib,提供了用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

  2. hmac模块实现了hmac算法,需要一个key来进行加密,提供更为强大的加密,不过需要提供key,也就是通常说的盐

  3. 使用hashlib.algorithms_available,可以查看hashlib提供的加密算法

  4. 加密的算法的一般使用,但时候存在缺陷,即:通过撞库可以反解

下面介绍hashlib常用的5种加密方式

md5

import hashlib
hash=hashlib.md5()#创建md5加密实例
hash.update(bytes('admin',encoding='utf-8'))
print('返回产生的十六进制的bytes: ', hash.hexdigest())
print(hash.digest())
返回产生的十六进制的bytes:  21232f297a57a5a743894a0e4a801fc3
b'!#/)zW\xa5\xa7C\x89J\x0eJ\x80\x1f\xc3'

sha1

hash=hashlib.sha1()
hash.update(bytes('admin',encoding='utf-8'))
print(hash.hexdigest())
d033e22ae348aeb5660fc2140aec35850c4da997

sha256

hash = hashlib.sha256()
hash.update(bytes('admin',encoding='utf-8'))
print(hash.hexdigest())
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

sha384

hash=hashlib.sha384()
hash.update(bytes('admin',encoding='utf-8'))
print(hash.hexdigest())
9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782

sha512

hash=hashlib.sha512()
hash.update(bytes('admin',encoding='utf-8'))
print(hash.hexdigest())
c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec

bash64

在一些项目中,接口的报文是通过base64加密传输的,所以在进行接口自动化时,需要对所传的参数进行base64编码 或者是 对拿到的响应报文进行解码

Base64编码是一种“防君子不防小人”的编码方式。广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符。
优点:速度快,ascii字符,肉眼不可理解
缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合

注意base64只能对bytes对象进行加密,所以如果要将1个字符串使用base64进行加密,首先应该将这个字符串转换为bytes类型
否则会产生TypeError错误:
TypeError: a bytes-like object is required, not ‘str’

print(base64.b64encode('kdkd'))
---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-40-7c51aa08d607> in <module>
----> 1 print(base64.b64encode('kdkd'))~/.virtualenvs/pd_test/lib/python3.6/base64.py in b64encode(s, altchars)56     application to e.g. generate url or filesystem safe Base64 strings.57     """
---> 58     encoded = binascii.b2a_base64(s, newline=False)59     if altchars is not None:60         assert len(altchars) == 2, repr(altchars)TypeError: a bytes-like object is required, not 'str'

base64编码encode

import base64

定义一个字符串str,并将它转换为bytes类型

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
str='admin'
str_bytes=bytes(str,'utf-8')
print(str_bytes)
b'admin'

使用b64encode对str_bytes进行加密

st_base64_encode=base64.b64encode(str_bytes)
print(st_base64_encode)
b'YWRtaW4='

使用b64decode对st_base64_encode进行解密

str_base64_decode=base64.b64decode(st_base64_encode)
print(str_base64_decode)
b'admin'

将b’admin’转换为字符串类型

str=str_base64_decode.decode()
print(str)
admin

【python3】通过hashlib 和base64 对字符串进行加密相关推荐

  1. 使用python hashlib模块给明文字符串加密,以及如何撞库破解密码

    文章目录: 1 hashlib介绍 2 hashlib模块使用 2.1 查看hashlib中有哪些hash算法 2.2 对字符串进行加密 2.3 对于数据比较大,加密可以分块,结果一样 2.4 has ...

  2. C#关于base64图片字符串的压缩方法

    文章目录 介绍 具体实现 总结 介绍 最近有项目遇到图片以二进制的形式存储到数据库中,但是需要以base64字符串的形式通过接口传到前端进行展示,但是有个图片流很大,会造成接口很慢或者直接超时报错.由 ...

  3. JAVA实现图片加水印及Base64图片字符串加水印

    JAVA实现图片加水印及Base64图片字符串加水印 可将根据不同需求选择场景一,场景二来实现家水印操作,个人感觉比我上一遍文章<base64字符串加水印 >实在 场景一: 涉及上送过来的 ...

  4. PHP 图片转base64编码 和 base64编码字符串转换成图片保存

    1.图片转base64编码: /*图片转换为 base64格式编码*/ $img = 'uploads/01.png'; $base64_img = base64EncodeImage($img); ...

  5. 使用base64格式字符串播放音频

    使用base64格式字符串播放音频 前端框架:React 平台:Node.js 现有需求:使用base64格式字符串播放音频 遇到的坑:现在的前端发展迅速,网上很多以前的代码无法使用,都已经过时,而且 ...

  6. 字符串转base64,base64转字符串

    [JavaScript原生提供两个Base64相关方法] btoa():字符串或二进制值转为Base64编码 atob():Base64编码转为原来的编码 注意:base64转码为+号的后台存储问题, ...

  7. Java通过JfreeChart生成转Base64图片字符串(饼图、折线图、柱状图、折线图-多条、3D柱状图、气泡图、时序图、曲线图、区域图、分布图、联合分类图、双X轴图、K线图、柱状图-横向等图)

    工具类 CreatLineChart.java package DrawLine;import java.awt.BasicStroke; import java.awt.Color; import ...

  8. Java中将base64编码字符串转换为图片

    前一段时间,在做摄像头拍照上传,摄像头拍的照片为base64编码格式的字符串,需要上传至项目中,则需要使用到将base64编码字符串转换为图片 1.将base64编码字符串转换为图片的代码如下 Ima ...

  9. Jva编解码,加密工具类大全(Base64编解码,URL 编解码,sha56_Hmac加密,MD5对字符串进行加密,java自带类实现SHA-256方式加密)

    Base64编解码 /*** Base64编码.*/public static String encodeBase64(byte[] input) {return new String(Base64. ...

最新文章

  1. struts2+hibernate3+spring3(ssh2)框架下的web应用(1)
  2. 使用IDEA编写Python程序,插件安装python插件,安装python SDK运行Python程序
  3. Kubernetes排错:用容器的元数据提供新思路
  4. php保存gbk字符串,php判断字符串gbk/utf8编码和转换
  5. ZooKeeper之Web管理工具Shepher介绍
  6. linux 如何查看fb中分辨率_Ubuntu: Linux下查看本机显示器分辨率(xrandr)
  7. 如何用vue实现模态框组件
  8. The last packet successfully received from the server was 39,900 milliseconds ago问题解决
  9. Windows由于在创建转储期间出错,创建转储文件失败导致的蓝底白字蓝屏重启,最全细解决方案
  10. 深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断...
  11. QListView的使用方法
  12. matlab中grid的用法
  13. 主流手机分辨率与尺寸
  14. 什么是黑盒测试?它的常用方法有哪些?
  15. Vuforia SDK导入问题Vuforia.UnityExtensions Consider removing one of the references or sign the assembl
  16. linux安装GPU显卡驱动、CUDA和cuDNN库
  17. Target EDI 对接详解 – Partner Online EDI 注册
  18. Fastadmin和Easywechat
  19. Linux“挂载”是什么意思
  20. 占星家眼中的十二星座--处女座

热门文章

  1. Docker容器学习梳理--日常操作总结
  2. oracle 修改数据表结构常用sql
  3. cmake 生成vc 项目文件
  4. 启动器和选择器学习-----(5)启动器
  5. 恭喜我自己装上了Windows Server 2008 R2 和使用Windows Live Writer 写日志
  6. [组图]海报:计算机的爱
  7. 不好意思朋友们,前段时间都没来过,工作忙!
  8. 也玩有道难题的双立方数问题:Python 版解法
  9. 计算机等级考试属于什么培训,计算机等级是什么
  10. 宏碁e5572g57mx加固态_宏基e5572g57mx怎么拆机