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中的heapq模块源码详析
Jan 08 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
python中的global关键字的使用方法
Aug 20 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
python机器学习库xgboost的使用
Jan 20 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
Python实现屏幕录制功能的代码
Mar 02 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 Python
详解Python 3.10 中的新功能和变化
Apr 28 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中,文件上传
2006/12/06 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
form中限制文本字节数js代码
2007/06/10 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
详解vue中computed 和 watch的异同
2017/06/30 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
JS实现密码框效果
2020/09/10 Javascript
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
Python中GIL的使用详解
2018/10/03 Python
Python实现名片管理系统
2020/02/14 Python
为什么说python更适合树莓派编程
2020/07/20 Python
Python基于execjs运行js过程解析
2020/11/27 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
广州迈达威.net面试题目
2012/03/10 面试题
高中数学教学反思
2014/01/30 职场文书
电力培训心得体会
2014/09/02 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
python实现Nao机器人的单目测距
2021/09/04 Python