zoukankan      html  css  js  c++  java
  • 客户合法性校验(密文hamc方法)

    1.import os
        os.urandom(num) 随机出一个num位的随机bytes
        
    2.import hamc
        md5_obj = hmac.new(盐,随机字符串)
        r = md5_obj.digest()
        拿到一个bytes的结果,也就是密文
        
    补充:hashlib的加密
            # md5_obj = hashlib.md5(sor)
            # md5_obj.update(r_str.encode('utf-8'))
            # result = md5_obj.hexdigest()
            
            
            
    #server层
    import socket
    import hashlib
    import os
    import hmac
    sk = socket.socket()
    sk.bind(('127.0.0.1',8080))
    sk.listen()
    
    conn,addr = sk.accept()
    #
    sor = b'alex'
    #随机字符串
    r_str = os.urandom(16)# 随机出一个16位长度的bytes
    #将随机字符串先发送到客户端client
    conn.send(r_str)
    #用hmac将盐和字符串加密成密文,结果是一个md5对象
    md5_obj = hmac.new(sor,r_str)
    #result此时是bytes类型,不需要进行编码解码等操作
    result = md5_obj.digest()
    #接受来自客户端的密文进行合法性判断
    msg = conn.recv(1024)
    if msg == result:
        #如果服务器端的密文和客户端发送过来的密文相匹配,则表示合法
        conn.send(b'success')
    else:
        conn.send(b'failed')
    
    
    conn.close()
    sk.close()
    
    
    
    #client层
    import socket
    import hmac
    sk = socket.socket()
    sk.connect(('127.0.0.1',8080))
    sor = b'alex'
    #先接收来自服务器的随机字符串
    r_str = sk.recv(1024)
    #用hmac将盐和字符串加密成密文,结果是一个md5对象
    md5_obj = hmac.new(sor,r_str)
    #result此时是bytes类型,不需要进行编码解码等操作
    result = md5_obj.digest()
    #将密文发送给服务器端server进行客户端合法性校验
    sk.send(result)
    #接收服务器对客户端合法性的反应消息
    msg = sk.recv(1024)
    print(msg)
    sk.close()



    图片理解:

  • 相关阅读:
    C++ 数字、string 简便互转
    【C语言】递归函数DigitSum(n)
    UVALIVE 4287 Proving Equivalences (强连通分量+缩点)
    【linux驱动分析】misc设备驱动
    C++ auto 与 register、static keyword 浅析
    spring 计时器
    Spring注解配置定时任务<task:annotation-driven/>
    去除ckeditor上传图片预览中的英文字母
    编码规范
    git 手动操作
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/11719058.html
Copyright © 2011-2022 走看看