python hashlib加密解密_python --- hashlib加密

一 * hashlib模块

1.哈希算法哈希函数 又称 散列函数 把数据转化为一串数字

对同一个数据在同一次运行同一个数据哈希结果相同

对每一个相同的值进行哈希结果是相同的

可哈希                不可变类型     数字字符串

不可哈希             可变类型      字典元组列表

字典的key键是不可变且唯一的*可哈希*,value值是可变的*不可哈希*

set集合是去重的也是散列函数

2.hashlib模块是加密的

1.加密也即摘要算法  用法import hashlib

md5   业界最常用的算法 32位16进制

sha1     算法                    40位16进制

文件一致性作用

验证加密

基本的摘要会撞库

加盐是恶意注册

动态加盐 -------安全的 username切片进行修饰

2.hmac 对hash进行封装

hmac(b"salt",b"hello",md5)

obj=hashlib.sha1()

obj.digest()    #字节串

3.获得随机数

import os

print(os.urandom(20))

3.登陆案例

用户密码是hello

a.txt

4.MD5加盐 验证文件一致性

二 * hashlib中的sha1算法

2.验证客户端是否合法

server.py

client.py

3.客户端验证合法之后进行通话

server.pyimport socket

import hashlib

sk=socket.socket()

sk.bind(("127.0.0.1",9090))

sk.listen(5)

conn,addr=sk.accept()

salt="hello"

str="来到医院"

ret_s=conn.send(str.encode("utf-8"))

ret_c=conn.recv(1024).decode("utf-8")

print(ret_c)

#对接收的内容进行加密

obj=hashlib.md5(salt.encode("utf-8"))

obj.update(str.encode("utf-8"))

str_obj=obj.hexdigest()

#将加密后的内容和加密之前的内容进行对比

if ret_c == str_obj:

print("合法的客户端允许链接")

while True:

s=input("发送消息给client>>>").encode("utf-8")

ret=conn.send(s)

print(ret)

msg=conn.recv(1024).decode("utf-8")

print(msg)

else:

print("不合法的客户端非法不连接")

conn.close()

sk.close()

client.py

三  *  验证合法之后进行封装

1.server.py

#创建连接import hmac

def  mysocket():

sk = socket.socket()

sk.bind(('127.0.0.1', 8080))

sk.listen(3)

conn, addr = sk.accept()

return conn,sk

#验证

def auth(conn,sk):

salt = b'hello'

str = os.urandom(20)

conn.send(str)  # 发送字节串

md5_s = conn.recv(1024)  # 接收客户端发来的MD5_s

#以下是hashlib模块

# obj = hashlib.md5(salt)

# obj.update(str)

# r_str = obj.hexdigest()

#以下是hmac模块

obj = hmac.new(salt,str)

r_str = obj.digest()

if md5_s == r_str:

print('合法的客户端,允许连接!')

com()

else:

print("非法!!!")

conn.close()

sk.close()

#通信函数

def com():

while True:

s = input("发送消息给client 》》》").encode('utf-8')

conn.send(s)

msg = conn.recv(1024).decode('utf-8')

print(msg)

if __name__ == '__main__':

conn,sk = mysocket()

auth(conn,sk)

cient.pyimport hmac

def mysocket():

sk = socket.socket()

sk.connect(('127.0.0.1',8080))

return sk

def auth(sk):

salt = b'hello'

bytes = sk.recv(1024) # 接收字符串

#以下是hashlib模块

# obj = hashlib.md5(salt)

# obj.update(s)

# r_str = obj.hexdigest()

#以下是hmac模块

obj = hmac.new(salt, bytes)

r_str = obj.digest()

sk.send(r_str)

com()

sk.close()

def com():

while True:

msg = sk.recv(1024).decode('utf-8')

print(msg)

s = input("发送消息给server 》》》").encode('utf-8')

sk.send(s)

if __name__ == '__main__':

sk = mysocket()

auth(sk)

你可能感兴趣的:(python,hashlib加密解密)