SocketServer模块,hmac模块验证client合法性

hmac模块:



1.模块初识:

import hmac
# h = hmac.new() #括号里要给它连个bytes类型,一个是自定义的secret_key,一个是你想进行加密的bytes
# 密文 = h.digest()
# hmac.compare_digest() #括号内传另外一个密文,看是否相等

h = hmac.new(b‘secret‘,b‘382835896‘)
digest = h.digest()
print(digest)
#>>>>  b‘\xa4<\r\xf8\xec0\x7f\x8ao\xec\xa7(\xf7[t\xfb‘

h = hmac.new(b‘secret‘,b‘382835896‘)
digest2 = h.digest()
print(hmac.compare_digest(digest,digest2)) #返回true

hmac模块初识

2.使用hmac模块,验证client端的合法性

import os
import hmac
import socket
secret_key = b‘wwl‘
sk = socket.socket()
sk.bind((‘127.0.0.1‘,8080))
sk.listen()
def check_client(conn):
    msg = os.urandom(32)
    conn.send(msg)
    h = hmac.new(secret_key,msg)
    digest = h.digest()
    client_digest = conn.recv(1024)
    return hmac.compare_digest(digest,client_digest)

conn,addr = sk.accept()
res = check_client(conn)
if res:
    print(‘合法的客户端‘)
    conn.close()
else:
    print(‘不合法的客户端‘)
    conn.close()
sk.close()

server端-hmac

import socket
import hmac

secret_key = b‘wwl111‘
sk = socket.socket()
sk.connect((‘127.0.0.1‘,8080))

msg = sk.recv(1024)
h = hmac.new(secret_key,msg)
client_digest = h.digest()
sk.send(client_digest)
sk.close()

client端-hamc

socketserver模块:



解读socketserver源码 —— http://www.cnblogs.com/Eva-J/p/5081851.html

socketserver模块可以开启server端的多线程,让多个client端访问server端:

import socketserver
class MyServer(socketserver.BaseRequestHandler):
    def handle(self):#原来socket写的程序里所有和conn有关的操作,都挪到handle方法里
        #self.request#相当于conn  #一旦客户端断开连接了,handle方法也应该结束
        while True:
            msg = self.request.recv(1024).decode(‘utf-8‘)
            if msg == ‘q‘:break
            print(msg)
            info = input(‘%s>>>> ‘%msg[:2])
            self.request.send(info.encode(‘utf-8‘))

if __name__ == ‘__main__‘:
    server = socketserver.ThreadingTCPServer((‘127.0.0.1‘,8080),MyServer)
    server.serve_forever()

server端-socketserver

import socket
sk = socket.socket()
sk.connect((‘127.0.0.1‘,8080))
while True:
    msg = input(‘>>>> ‘)
    if msg == ‘q‘:
        break
    sk.send(msg.encode(‘utf-8‘))
    ret = sk.recv(1024).decode(‘utf-8‘)
    print(ret)
sk.close()

client端-socketserver

原文地址:https://www.cnblogs.com/gkx0731/p/9727249.html

时间: 2024-11-08 21:37:29

SocketServer模块,hmac模块验证client合法性的相关文章

python--&gt;hashlib模块和hmac模块

目录 一.hashlib模块 1.0.1 hashlib是什么 1.0.2 撞库破解hash算法加密 二.hmac模块 目录 一.hashlib模块 密码加密:无论你丢什么字符串,他都会返回一串 固定长度的字符串 变成固定的字符串 相同的字符串哈希后结果一样 叠加性 1.0.1 hashlib是什么 hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256.SHA384.SHA512.MD5 算法),该算法接受传

使用CAS登录模块连接数据库验证用户合法性

使用CAS登录模块连接应用数据库验证用户合法性 关于如何配置CAS登录模块集成到开发的Web Application请看这里: http://blog.csdn.net/jia20003/article/details/49683827 基于cas server 3.5.0版本配置实现. 这里我们主要讲述如何利用已经存在的用户数据表user_table中的username与password两个字段,实现用户从CAS模块登录时候查询我们应用数据库basicweb中的user_table表.验证用户

socketserver和socket的补充(验证客户端合法性)

一.socket的补充 1.参数 socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None) 参数说明: family 地址系列应为AF_INET(默认值ipv4),AF_INET6(ipv6),AF_UNIX,AF_CAN或AF_RDS. (AF_UNIX 域实际上是使用本地 socket 文件来通信) type 套接字类型应为SOCK_STREAM(默认值,tcp协议),SOCK_DGRAM(udp协议),SOCK_R

NGINX模块开发 之 验证URL参数

作者:邹祁峰 邮箱:[email protected] 博客:http://blog.csdn.net/qifengzou 日期:2014.05.26 16:45 转载请注明来自"祁峰"的CSDN博客 要求在浏览器地址栏中输入"localhost/login?user=qifeng&passwd=123456",并在浏览器上显示验证结果(Success 或 Failed).以下是在NGINX中添加一个LOGIN模块的整个处理过程. 1 修改配置 修改配置文件

Python之hmac模块的使用

hmac模块的作用: 用于验证信息的完整性. 1.hmac消息签名(默认使用MD5加算法) #!/usr/bin/env python # -*- coding: utf-8 -*- import hmac #默认使用是md5算法 digest_maker = hmac.new('secret-shared-key'.encode('utf-8')) with open('content.txt', 'rb') as f: while True: block = f.read(1024) if

hmac模块使用

hmac模块使用 hashlib : 不可逆加密 hmac : 不可逆键值对方式加密 base64: 可逆加密 使用案例如下: 1 import hmac 2 3 a=hmac.new('key'.encode('utf-8')) #new 先加密一个key叫做'key' 4 a.update('abc'.encode('utf-8')) 5 a.update('bbb'.encode('utf-8')) 6 a.update('ccc'.encode('utf-8')) 7 a.update(

Python自带的hmac模块

Python自带的hmac模块实现了标准的Hmac算法 我们首先需要准备待计算的原始消息message,随机key,哈希算法,这里采用MD5,使用hmac的代码如下: import hmac message = b'Hello world' key = b'secret' h = hmac.new(key,message,digestmod='MD5') print(h.hexdigest()) 可见使用hmac和普通hash算法非常类似.hmac输出的长度和原始哈希算法的长度一致.需要注意传入

第三十六篇 hashlib模块、hmac模块和logging模块

目录 第三十七篇 hashlib模块.hmac模块和logging模块 一.hashlib模块 1.hash是什么 2.撞库破解hash算法加密 二.hmac模块 三.logging模块 1.日志的五个级别 2.V3 3.日志配置文件 4.总结 第三十七篇 hashlib模块.hmac模块和logging模块 一.hashlib模块 1.hash是什么 1.hashlib模块一般用于明文加密 2.hash是一种算法,在hashlib模块中主要提供了md5 等算法,传入的内容通过这些算法,会得到一

hmac模块

hmac模块 对密码加密,可以加盐 import hmac m=hmac.new(b'abc') #加盐 m.update(b'123456') print(m.hexdigest()) # 注意hmac模块只接受二进制数据的加密 # abc 123 456 --> 8c7498982f41b93eb0ce8216b48ba21d # abc 123456 --> 8c7498982f41b93eb0ce8216b48ba21d # a 1234556 --> 3e391a1d7bf57