Python的加密模块md5、sha、crypt使用实例


Posted in Python onSeptember 28, 2014

MD5(Message-Digest Algorithm 5) 模块用于计算信息密文(信息摘要),得出一个128位的密文。sha模块跟md5相似,但生成的是160位的签名。使用方法是相同的。

如下实例是使用md5的:

# /usr/bin/python

# -*- coding:utf-8 -*-

import base64

try:

    import hashlib

    hash = hashlib.md5()

except ImportError:

    # for Python << 2.5

    import md5

    hash = md5.new()

hash.update('spam,spam,and egges')

value = hash.digest()

print repr(value)   #得到的是二进制的字符串

print hash.hexdigest()  #得到的是一个十六进制的值

print base64.encodestring(value) #得到base64的值
# /usr/bin/python

# -*- coding:utf-8 -*-

# 客户端与服务器端通信的信息的验证
import string

import random
def getchallenge():

    challenge = map(lambda i: chr(random.randint(0,255)),range(16))

    return string.join(challenge,"")
def getresponse(password,challenge):

    try:

        import hashlib

        hash = hashlib.md5()

    except ImportError:

        # for Python << 2.5

        import md5

        hash = md5.new()

    hash.update(password)

    hash.update(challenge)

    return  hash.digest()
print "client: ","connect"

challenge= getchallenge()

print "server: ",repr(challenge)

client_response = getresponse("trustno1",challenge)

print "client: ",repr(client_response)

server_response = getresponse("trustno1",challenge)

if client_response == server_response:

    print "server:","login ok"

crypt 模块(只用于 Unix)实现了单向的 DES 加密, Unix 系统使用这个加密算法来储存密码, 这个模块真正也就只在检查这样的密码时有用。

如下实例,展示了如何使用 crypt.crypt 来加密一个密码, 将密码和 salt组合起来然后传递给函数, 这里的 salt 包含两位随机字符.现在你可以扔掉原密码而只保存加密后的字符串了。

# /usr/bin/python

# -*- coding:utf-8 -*-
import crypt

import random,string
def getsalt(chars = string.letters+string.digits):

    return random.choice(chars)+random.choice(chars)
salt = getsalt()

print salt

print crypt.crypt('bananas',salt)
Python 相关文章推荐
python编写网页爬虫脚本并实现APScheduler调度
Jul 28 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
Windows系统下多版本pip的共存问题详解
Oct 10 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
Python 的AES加密与解密实现
Jul 09 Python
python numpy中cumsum的用法详解
Oct 17 Python
python实现滑雪游戏
Feb 22 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 Python
wxPython学习之主框架实例
Sep 28 #Python
python实现得到一个给定类的虚函数
Sep 28 #Python
python实现根据图标提取分类应用程序实例
Sep 28 #Python
wxPython事件驱动实例详解
Sep 28 #Python
python中的多重继承实例讲解
Sep 28 #Python
python错误处理详解
Sep 28 #Python
python中实现定制类的特殊方法总结
Sep 28 #Python
You might like
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
动态控制Table的js代码
2007/03/07 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
python3 配置logging日志类的操作
2020/04/08 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
Java的for语句中break, continue和return的区别
2013/12/19 面试题
Linux上比较文件的命令都有哪些
2013/09/28 面试题
非功能性需求都包括哪些方面
2013/10/29 面试题
写给保洁员表扬信
2014/01/08 职场文书
玲玲的画教学反思
2014/02/04 职场文书
优秀学生获奖感言
2014/02/15 职场文书
小学亲子活动总结
2014/07/01 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
Python中的socket网络模块介绍
2022/07/23 Python