学习-----通信加密的相关包

python模块中有很多关于加密算法的标准包,hashlib,hmac,uuid等

hashlib模块实现各种安全的散列和消息摘要算法, 例如:MD5和SHA1.计算散列值,有以下一些构造函数.名称和算法是相对应的.

md5( )  

sha1( )

sha224( )

sha256( )

sha384( )

sha512( )

以上的都是构造函数.我们构造出摘要对象的实例之后,可以用新数据更新散列.

d.update(data)   

然后可以用

d.digest( ) 将摘要值作为原始字节字符串返回

d.hexdigest( ) 也是将摘要值作为字符串返回,只不过 返回的是文本字符串, 并编码为一系列16进制数字

hmac模块是为加密散列消息确认提供支持(Keyed-Hashing for Message Authentication) ,也就是在通信的时候,用于消息验证.

HMAC就是一个消息验证的机制, 以加密的散列函数 MD5, SHA-1 为基础.

下面讲一下语法.

构造函数:  new(key, [, msg [, digest]])

解释一下这三个参数, key是通信的双方约定好的一个密钥, msg是通信的内容, digest是 加密散列的摘要构造函数, 也就是用哪种算法来散列加密. 默认为 hashlib.md5,

这个构造函数生成一个HMAC对象.

当然我们构造这个函数的时候, 也可以new(key)只填一个密钥.生成HMAC对象实例h,

然后 h.update(msg)将通信字符串加入HMAC对象.

h.digest()

h.hexdigest()

这两个方法都是余hashlib的相同的.


举一个加密通信验证的例子.

我们以套接字为例


####################

消息发送方

secret_key = "fdsafasdfsadfdsfsga"  #通信双方约定

date = "hello"

h = hmac.new(secret_key)    #生成HMAC对象

h.update(data)  将通信数据加入HMAC对象

out.send(data)           #发送消息

out.send(h.digest( )) #发送验证摘要


#########################

接收方

h = hmac.new(secret_key)

data = in.receive( ) #接收到的消息

h.updata( data )  #将接收到的消息加入HMAC对象

digest = in.receive() #发过来的摘要值

if digest != h.digest()

    摘要不匹配, 非法消息

else:

   合法消息


uuid这个包能够生成唯一的id号, 就bson 的ObjectId( )

uuid.uuid4()生成一个随机的UUID对象.

我们可以用上str(...)将其转化为字符串

uuid和bson可以运用在产生随机密钥的情况.

os.urandom( )类似

bson 可以保证任何计算机,任何时间id唯一,可以用于分布式计算.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值