python的一些加密方法及python 加密模块


Posted in Python onJuly 11, 2019

1base64

Python内置的base64模块可以实现base64、base32、base16、base85、urlsafe_base64的编码解码,python 3.x通常输入输出都是二进制形式,2.x可以是字符串形式。

base64模块的base64编码、解码调用了binascii模块,binascii模块中的b2a_base64()函数用于base64编码,binascii模块中的a2b_base64()函数用于base64解码。

import base64
s = 'hello, world'
base64.b64encode(bytes(s, 'ascii'))
b'aGVsbG8sIHdvcmxk'
base64.b64decode(base64.b64encode(bytes(s, 'ascii')))
b'hello, world'

2.md5

Python2.x中有md5模块,此模块调用了hashlib模块,python3.x已中将md5取掉,直接通过调用hashlib模块来进行md5。Python2.x可以直接使用unicode字符,但3.x中必须使用二进制字节串。

import hashlib
m = hashlib.md5()
m.update(b'hello, world!')
m.hexdigest()
'3adbbad1791fbae3ec908894c4963870'

3.sha1

类似于MD5

import hashlib
m = hashlib.sha1()
m.update(b'hello, world!')
m.hexdigest()
'1f09d30c707d53f3d16c530dd73d70a6ce7596a9'

4.crc32

计算指定内容的crc32校验值,可以用zlib以及binascii模块的crc32函数.

import zlib
import binascii
s = b'hello, world!'
zlib.crc32(s)
1486392595
binascii.crc32(s)
1486392595

ps:下面看下Python之加密模块

hashlib模块

•加密方式以md5方式加密举例
•是标准模块,直接导入即可
•还有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密后的字符串长度更长,安全性更高

一、加密步骤

1、字符串先转成二进制类型

使用.encode()方法转成二进制类型

import hashlib
password='123456'
print(password.encode())#字符串不能直接加密,要先转成二进制类型的才可以加密
#结果为:b'123456'

2、使用加密方法

使用.hexdigest()方法输出加密后内容

import hashlib
password='123456'
m=hashlib.md5(password.encode()) #先转成二进制,再加密
#print(dir(m)) #由于这个加密模块pycharm提供不了提示方法,所以如果想知道都有什么方法,可以使用内置函数dir(),使用这条语句就能打印出所有方法了
print(m.hexdigest())

3、打印加密后的内容

使用dir()内置函数显示该变量的所有方法

由于该模块pycharm无法提供提示方法,即输入m“.”不出来方法,所以可以使用内置函数dir(),将所有方法打印出来。

#print(dir(m)) #由于这个加密模块pycharm提供不了提示方法,所以如果想知道都有什么方法,可以使用内置函数dir(),使用这条语句就能打印出所有方法了
print(m.hexdigest())

二、加密相关

1、检验加密结果

•由于md5方式加密完的字符串无论原字符串有多长都是32位,因此可以使用len()方法检验是否加密成功:

print(len(m.hexdigest())

2、md5加密之后是不可逆的
•网络上可以解密的原理是撞库,即:将常用的密码加密完存在数据库里,然后直接搜库。

如果输入的加密后密码碰巧数据库里有,就能把对应的加密前密码返回给你,并不是真正的解密。

3、其他的加密方式

本文的加密方式以md5方式加密举例,还有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密后的字符串长度更长,安全性更高。

m=hashlib.sha1(password.encode())#不同的加密方式
m=hashlib.sha224(password.encode()) #不同的加密方式
m=hashlib.sha256(password.encode()) #不同的加密方式

三、加盐

 原理:

如果要对password=123456加密,这个明文密码太简单,容易撞库解密,所以在123456之后随机加一个字符串,比如abc,这样实际是对123456abc进行加密,如果不知道abc这个字符串,反解的可能性降低,安全性更高。这样的一个字符串就叫做盐。

四、实际应用

#实现加密:传入一个值,如果有盐值,则加盐加密;否则直接加密
def my_md5(s:str,salt=None):
  s=str(s)
  if salt:
    s=s+salt
  m=hashlib.md5(s.encode())
  return m.hexdigest()

总结

以上所述是小编给大家介绍的python的一些加密方法及python 加密模块 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python设计模式大全
Jun 27 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
python XlsxWriter模块创建aexcel表格的实例讲解
May 03 Python
利用pandas将numpy数组导出生成excel的实例
Jun 14 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 Python
python使用thrift教程的方法示例
Mar 21 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
Python随机数函数代码实例解析
Feb 09 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
Django跨域请求原理及实现代码
Nov 14 Python
kali中python版本的切换方法
Jul 11 #Python
python按比例随机切分数据的实现
Jul 11 #Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 #Python
Python循环结构的应用场景详解
Jul 11 #Python
python列表,字典,元组简单用法示例
Jul 11 #Python
python实现数据分析与建模
Jul 11 #Python
新手如何发布Python项目开源包过程详解
Jul 11 #Python
You might like
PHP 递归效率分析
2009/11/24 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
PHP代码优化技巧小结
2015/09/29 PHP
PHP实现简易blog的制作
2016/10/24 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
PHP重载基础知识回顾
2020/09/10 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
js简易版购物车功能
2017/06/17 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
Python登录系统界面实现详解
2019/06/25 Python
Django中Middleware中的函数详解
2019/07/18 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
服务整改报告
2014/11/06 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
Mysql事务索引知识汇总
2022/03/17 MySQL