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 计算文件的md5值实例
Jan 13 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
Php多进程实现代码
May 07 Python
python字符串与url编码的转换实例
May 10 Python
利用python如何处理nc数据详解
May 23 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
Python更新所有已安装包的操作
Feb 13 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 Python
python程序的组织结构详解
Dec 06 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
延长phpmyadmin登录时间的方法
2011/02/06 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
微信小程序使用Socket的实例
2017/09/19 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
完美解决axios跨域请求出错的问题
2018/02/05 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
Python字符串和文件操作常用函数分析
2015/04/08 Python
python从入门到精通(DAY 1)
2015/12/20 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
python中如何打包用户自定义模块
2020/09/23 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
银行职员思想汇报
2013/12/31 职场文书
简单英文演讲稿
2014/01/01 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
毕业自我鉴定书
2014/03/24 职场文书
法律顾问服务方案
2014/05/15 职场文书
护士求职自荐信
2015/03/25 职场文书
小学语文教师研修日志
2015/11/13 职场文书