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来编写HTTP服务器的超级指南
Feb 18 Python
python对DICOM图像的读取方法详解
Jul 17 Python
python实现学生管理系统
Jan 11 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
python异步存储数据详解
Mar 19 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
提升python处理速度原理及方法实例
Dec 25 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
零基础小白多久能学会python
Jun 22 Python
用pip给python安装matplotlib库的详细教程
Feb 24 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技巧与注意事项分析
2011/02/03 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
javascript各种复制代码收集
2008/09/20 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
node.js的事件机制
2017/02/08 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
python自动重试第三方包retrying模块的方法
2018/04/24 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
详解python itertools功能
2020/02/07 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
美国眼镜网:GlassesUSA
2017/09/07 全球购物
蛋白质世界:Protein World
2017/11/23 全球购物
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
AJAX的全称是什么
2012/11/06 面试题
竞聘演讲稿范文
2014/01/12 职场文书
三年级数学教学反思
2014/01/31 职场文书
教育学习自我评价
2014/02/03 职场文书
承诺书格式
2014/06/03 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
继承权公证书范本
2015/01/23 职场文书
500字小学生检讨书
2015/02/19 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL