python基础--hashlib模块
2024-10-21 06:21:44
hashlib模块用于加密操作,代替了md5和sha模块,
主要提供SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法.
# -*- coding:utf-8 -*-
__author__ = 'shisanjun' import hashlib
m=hashlib.md5() #使用MD5算法
m.update(b"hello") #必须加b,申明为byte
m.update(b"It is me") print(m.digest()) #2进制格式hash
m.update(b"hello It is me")
print(m.digest())
print(m.hexdigest()) #16进制格式hash """
def digest(self, *args, **kwargs): # real signature unknown
""" Return the digest value as a string of binary data. """
pass def hexdigest(self, *args, **kwargs): # real signature unknown
""" Return the digest value as a string of hexadecimal digits. """
pass
"""
# -*- coding:utf-8 -*-
__author__ = 'shisanjun' import hashlib #md5算法加密
hash=hashlib.md5()
hash.update(b'admin')
print(hash.hexdigest()) #sha1算法加密
hash=hashlib.sha1()
hash.update(b"admin")
print(hash.hexdigest()) #sha256算法加密
hash=hashlib.sha256()
hash.update(b"admin")
print(hash.hexdigest()) #sha512算法加密
hash=hashlib.sha512()
hash.update(b"admin")
print(hash.hexdigest())
python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;
一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后消息发送把用key把消息加密,接收方用key + 消息明文再加密,拿加密后的值 跟 发送者的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了。
>>> import hmac
>>> print hmac.new("mykey","Hello world !").hexdigest()
d157e0d7f137c9ffc8d65473e038ee86 #下面是一个简单的C/S程序,使用了hmac签名 # 客户端 (signs the data)
import xmlrpclib,hmac,hashlib
key = "mysecret" server = xmlrpclib.ServerProxy("http://localhost:8888")
name = "Homer"
signature = hmac.new(key,name).hexdigest()
print server.sayHello(signature,name) # 服务器 (verifies the signature)
import SimpleXMLRPCServer,hmac,hashlib
key = "mysecret" class MyClass:
def sayHello(self, signature, name):
if hmac.new(key,name).hexdigest() != signature:
return "Wrong signature ! You're a hacker !"
else:
return u"Hello, %s !" % name server_object = MyClass()
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8888)) # (2)
server.register_instance(server_object) # (3)
print "Listening on port 8888"
server.serve_forever()
最新文章
- iOS 下拉刷新-上拉加载原理
- ios 缺少合规证明
- ios8版本地图定位注意点
- JMS学习(六)-ActiveMQ的高可用性实现
- sed小知识总结
- [题解]hdu 1009 FatMouse' Trade(贪心基础题)
- 在Servlet中出现一个输出中文乱码的问题(已经解)。
- iOS:集成ijkplayer视频直播
- Servlet容器如何同时来处理多个请求
- poj 3048 Max Factor(素数筛)
- Delphi中TxmlDocument控件的用法 转
- TypeScript设计模式之组合、享元
- hibernate学习(四)hibernate的一级缓存&;快照
- js中对象的自定义排序
- $refs的用法及作用
- Flutter的Appbar
- 多态(instanceof)
- 动态分配内存 new
- form表单提交时action路劲问题
- CSS 实现图片灰度效果