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的迭代器、生成器以及相关的itertools包
Apr 02 Python
python使用wxPython打开并播放wav文件的方法
Apr 24 Python
Python读写文件方法总结
Jun 09 Python
便捷提取python导入包的属性方法
Oct 15 Python
Form表单及django的form表单的补充
Jul 25 Python
Python秒算24点实现及原理详解
Jul 29 Python
python实现四人制扑克牌游戏
Apr 22 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
Python filter()及reduce()函数使用方法解析
Sep 05 Python
python利用platform模块获取系统信息
Oct 09 Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 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获取文件大小的方法
2014/02/26 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
动手学习无线电
2021/03/10 无线电
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
英国网上花店:Bunches
2016/11/29 全球购物
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
在家更换处方镜片:Lensabl
2019/05/01 全球购物
气象学专业个人求职信
2014/03/15 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python