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 相关文章推荐
tornado捕获和处理404错误的方法
Feb 26 Python
使用pycharm生成代码模板的实例
May 23 Python
解决python 文本过滤和清理问题
Aug 28 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
Python递归函数特点及原理解析
Mar 04 Python
python3.6使用SMTP协议发送邮件
May 20 Python
使用opencv中匹配点对的坐标提取方式
Jun 04 Python
Django模型验证器介绍与源码分析
Sep 08 Python
如何完美的建立一个python项目
Oct 09 Python
Python 操作SQLite数据库的示例
Oct 16 Python
Python 虚拟环境工作原理解析
Dec 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 ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
javascript new 需不需要继续使用
2009/07/02 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
详解如何在NodeJS项目中优雅的使用ES6
2017/04/22 NodeJs
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
用Python遍历C盘dll文件的方法
2015/05/06 Python
python ansible服务及剧本编写
2017/12/29 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
Python 爬虫的原理
2020/07/30 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
HTML5视频支持检测(检查浏览器是否支持视频播放)
2013/06/08 HTML / CSS
美的官方商城:Midea
2016/09/14 全球购物
关于毕业的中学校园广播稿
2014/01/26 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
出生医学证明书
2014/09/15 职场文书
教师节寄语2015
2015/03/23 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js