美文网首页编程之美-Pyhon
python --- hashlib加密

python --- hashlib加密

作者: 幼姿沫 | 来源:发表于2020-04-23 21:23 被阅读0次

一 * 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.py

import 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.py

import 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加密

    本文链接:https://www.haomeiwen.com/subject/ewdwihtx.html