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 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
浅谈MySQL中的触发器
May 05 Python
详解Django缓存处理中Vary头部的使用
Jul 24 Python
python实现按行切分文本文件的方法
Apr 18 Python
Python中的浮点数原理与运算分析
Oct 12 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
Dec 21 Python
python将字典内容存入mysql实例代码
Jan 18 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
Django的models模型的具体使用
Jul 15 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
使用django自带的user做外键的方法
Nov 30 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
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
JS 字符串连接[性能比较]
2009/05/10 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
python 自定义对象的打印方法
2019/01/12 Python
python 整数越界问题详解
2019/06/27 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
厂长岗位职责
2014/02/19 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
单位证明范文
2015/06/18 职场文书
python3美化表格数据输出结果的实现代码
2021/04/14 Python
TensorFlow的自动求导原理分析
2021/05/26 Python
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server
基于docker安装zabbix的详细教程
2022/06/05 Servers