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单线程实现多个定时器示例
Mar 30 Python
怎样使用Python脚本日志功能
Aug 14 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
详解Python装饰器
Mar 25 Python
python导入pandas具体步骤方法
Jun 23 Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 Python
详解python中的数据类型和控制流
Aug 08 Python
python实现文件的分割与合并
Aug 29 Python
利用python实现冒泡排序算法实例代码
Dec 01 Python
python中entry用法讲解
Dec 04 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读取数据库信息的几种方法
2008/05/24 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
基于Jquery的简单&简陋Tabs插件代码
2010/02/09 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
2015/12/30 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
事业单位个人应聘自荐信
2013/09/21 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
运动会800米加油稿
2014/02/22 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
党员岗位承诺书
2014/03/25 职场文书
横幅标语大全
2014/06/17 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书