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根据区号生成手机号码的方法
Jul 08 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
python计算日期之间的放假日期
Jun 05 Python
python画图系列之个性化显示x轴区段文字的实例
Dec 13 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
python装饰器相当于函数的调用方式
Dec 27 Python
Python for循环与getitem的关系详解
Jan 02 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
Python性能分析工具py-spy原理用法解析
Jul 27 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
Nov 11 Python
Python+Matplotlib+LaTeX玩转数学公式
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
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
以文本方式上传二进制文件的PHP程序
2006/10/09 PHP
js下函数般调用正则的方法附代码
2008/06/22 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
亲子读书活动方案
2014/02/22 职场文书
食品安全工作实施方案
2014/03/26 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
国庆促销活动总结
2014/08/29 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
运动会加油稿30字
2015/07/21 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL
muduo TcpServer模块源码分析
2022/04/26 Redis