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套接字流重定向实例汇总
Mar 03 Python
python函数中return后的语句一定不会执行吗?
Jul 06 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
Nov 30 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
python numpy 显示图像阵列的实例
Jul 02 Python
python操作excel的方法
Aug 16 Python
python中字符串内置函数的用法总结
Sep 13 Python
使用Python进行目录的对比方法
Nov 01 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 Python
Python安装使用Scrapy框架
Apr 12 Python
Elasticsearch 批量操作
Apr 19 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网站提速三大“软”招
2006/10/09 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
用php解析html的实现代码
2011/08/08 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
js获取class的所有元素
2013/03/28 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
python 生成图形验证码的方法示例
2018/11/11 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
Python3 合并二叉树的实现
2019/09/30 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
学院领导推荐信
2013/10/30 职场文书
大学生求职信例文
2014/06/29 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
python关于集合的知识案例详解
2021/05/30 Python