31.Python基础篇-hmac模块

news/2024/12/21 17:56:35/文章来源:https://www.cnblogs.com/mingbo-1/p/18621007

hmac与hashlib模块的区别

hmac模块

  • 基于 hashlib 提供的哈希算法,在计算哈希时加入了一个“密钥”。
  • 主要用于生成“消息认证码”(MAC),通过一个密钥和数据共同生成哈希值,以此来验证数据的完整性和身份。
  • 需要密钥,它的目的是防止消息篡改并验证消息是否来源于可信的发送方。

hashlib

  • 主要用于计算消息的哈希值,支持多种哈希算法,如 MD5、SHA-1、SHA-256 等。
  • 计算的是“纯粹的”哈希值,即输入数据的哈希摘要。
  • 没有密钥相关的操作,因此主要用于数据完整性验证和指纹生成。

hmac的使用场景,同时介绍如何使用

使用hmac生成密钥,发送给要连接的客户端。用于检验客户端的合法性

server端代码 :

import hashlib
import hmac
import socket
import ossecret_key = b'python'  # 一个密钥,客户端与服务端约定好的
# ...
sk = socket.socket()
sk.bind(('127.0.0.1', 8080))
sk.listen()
conn, addr = sk.accept()def check_conn(conn):"""校验客户端的合法性:param conn::return:"""msg = os.urandom(32)  # 随机生成一个32位的内容
    conn.send(msg)# hmac.new()  用于创建一个新的 HMAC 对象,初始化 HMAC 计算。它需要密钥、消息和哈希算法作为输入。h = hmac.new(secret_key, msg, digestmod=hashlib.sha256)# 获取最终的 HMAC 结果,返回的是原始的字节数据(消息认证码)digest_msg = h.digest()client_digest_msg = conn.recv(1024)  # 客户端收到随机数后,使用与server相同的方式进行加密,并发给服务端# 服务端将自己的加密结果与客户端的加密结果进行比较return hmac.compare_digest(digest_msg, client_digest_msg)
res = check_conn(conn)
if res is True:print("合法的登录")conn.close()
else:print("不合法的登录")conn.close()

 

client端代码:

import hashlib
import socket
import hmacsecret_key = b'python'  # 一个密钥,客户端与服务端约定好的

sk = socket.socket()
sk.connect(('127.0.0.1', 8080))msg = sk.recv(1024)  # 收到服务端发过来的随机数# 使用与服务端同样的密钥,随机数,哈希算法,进行加密
h = hmac.new(secret_key, msg, digestmod=hashlib.sha256)# 获取最终的结果,并发给服务端。对方验证客户端是否合法
digest_msg = h.digest()
sk.send(digest_msg)
sk.close()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/856432.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习笔记(二) vi/vim快速入门

Linux系统会内置vi文本编辑器。 vim具有程序编辑的能力,可以看作是vi的增强版本,可以主动的以字体颜色辨别语法的正确性, 方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 下面将介绍: 1.vim打开或创建文件的方法。 2.vim的三种工…

Z-BlogPHP 安装步骤

解压程序代码将下载的 Z-BlogPHP 压缩包解压到你的网站根目录,例如 /home/wwwroot/example.com/。访问安装页面打开浏览器,访问你的网站地址,例如 http://example.com/。 会自动跳转到安装页面 http://example.com/zb_install/index.php。填写安装信息在安装页面中输入以下信…

请问如何在 Z-BlogPHP 中开启 Beta 版更新推送?

在 Z-BlogPHP 中开启 Beta 版更新推送可以帮助你及时获取最新的功能和改进,但同时也需要注意 Beta 版可能存在不稳定的情况。以下是开启 Beta 版更新推送的详细步骤:进入后台管理:登录 Z-BlogPHP 后台管理界面,使用你在安装时设置的管理员用户名和密码。访问应用中心:在后…

升级 Z-BlogPHP 到 1.7.3.3260 后为什么会出现后台登录错误?

升级 Z-BlogPHP 到 1.7.3.3260 版本后,后台登录可能会出现错误,主要是由于新版本增加了两个重要的安全保护功能:CSRF(跨站请求伪造)保护和验证码功能。这些功能旨在提高系统的安全性,防止未经授权的访问和自动化攻击。然而,由于某些主题或插件的兼容性问题,这些新增的安…

织梦网站logo图片怎么修改,织梦网站Logo图片修改指南

修改织梦网站的Logo图片可以提升网站的品牌形象。以下是详细的步骤:登录后台管理系统:使用管理员账号登录织梦CMS的后台管理系统。进入模板管理:导航到“模板管理” -> “默认模板管理”。编辑头部模板:找到头部模板文件,通常是header.htm。 点击“编辑”按钮,打开模板…

网站如何修改HTML,轻松掌握HTML文件的编辑技巧

HTML(超文本标记语言)是构建网页的基础。如果您需要修改网站的HTML文件,以下是一些基本步骤和技巧:找到HTML文件:确定您需要修改的HTML文件的位置。通常,HTML文件位于网站根目录或特定的文件夹中。使用文本编辑器:使用文本编辑器(如Notepad++、Sublime Text、VS Code等…

如何修改公司网站的内容,轻松更新网站信息

公司网站的内容更新是维护品牌形象和客户信任的重要环节。以下是一些步骤和技巧,帮助您轻松修改公司网站的内容:确定修改内容:明确需要修改的内容,例如新闻公告、产品介绍、联系方式等。登录后台管理系统:如果您的网站使用CMS(如WordPress、Joomla等),登录后台管理系统…

百度网站标题被修改怎么办,快速恢复百度搜索结果中的网站标题

如果发现百度搜索结果中的网站标题被修改,可以采取以下措施:检查网站元标签:确保网站的HTML代码中包含正确的<title>标签,例如:<title>您的网站标题</title>更新robots.txt:确保robots.txt文件没有阻止搜索引擎抓取网站的关键页面。 提交站点地图:在百…

上传到ftp的网站怎么修改,FTP上传网站文件修改指南

通过FTP上传文件后,你可以直接在服务器上修改网站文件。以下是详细的步骤:连接到FTP服务器:使用FTP客户端(如FileZilla、WinSCP等)连接到你的服务器。输入FTP服务器地址、用户名和密码。导航到网站目录:在FTP客户端中,导航到存放网站文件的目录。通常这个目录名为 publi…

jquery动画表情插件

jquery.mb.emoticons.js是一款jquery动画表情插件。它允许你通过面板拾取某个表情符号,然后可以通过这些表情相应的关键字符号将它们转换为gif动画表情。在线预览 下载使用方法 在页面中引入jquery和jquery.mb.emoticons.js文件。< script src="js/jquery.min.js&q…

软件技术基础第五次作业

.center { width: auto; display: table; margin-left: auto; margin-right: auto }班级链接 24软件技术基础(浙江理工大学)目标 搭建简易的图书管理系统网盘地址 https://pan.baidu.com/s/1lnq1AF1mG5m3BSuj1wa2xw?pwd=ds74码云地址 https://gitee.com/honeyest/library-sy…

MediaWIKI 1.42 教程系列2 — MediaWIKI 配置

接着上篇安装完Ubuntu 环境,本篇正式开始MediaWIKI 下载和配置 下载 MediaWiki 官网路径通过官网或者其他网友网盘分享的地址下载,后解压缩成文件夹,重新命名 mediawiki 文件夹,上传至或者拷贝至服务器主机。需要说明的是,官网并没有指明拷贝到何处。理论上可以放置在任何…