前后端交互常用的时间敏感算法

前后端交互常用的时间敏感算法

前后端交互中涉及时间敏感的算法主要用于确保数据传输的安全性、有效性和同步性。以下是一些常见的时间敏感算法和技术:

1. 基于时间戳的签名算法(HMAC):

描述: HMAC(哈希消息认证码)是一种基于散列函数的消息认证码,通过在消息中添加时间戳,可以防止重放攻击。
应用: 用于API请求的认证和授权。例如,在请求头中包含时间戳和HMAC签名,服务器可以验证请求的时间戳是否在允许的时间窗口内。

import hmac
import hashlib
import time
import base64def generate_signature(secret_key, message, timestamp):# 创建带有时间戳的消息message_with_timestamp = f"{message}:{timestamp}"# 使用HMAC和SHA256哈希算法生成签名signature = hmac.new(secret_key.encode(), message_with_timestamp.encode(), hashlib.sha256).digest()# 将签名编码为Base64格式signature_base64 = base64.b64encode(signature).decode()return signature_base64def verify_signature(secret_key, message, timestamp, signature, time_window=60):# 获取当前时间戳current_timestamp = int(time.time())# 检查时间戳是否在允许的时间窗口内if abs(current_timestamp - int(timestamp)) > time_window:return False# 生成待验证的签名expected_signature = generate_signature(secret_key, message, timestamp)# 比较生成的签名和传入的签名是否匹配return hmac.compare_digest(expected_signature, signature)# 使用示例
secret_key = "your_secret_key"
message = "your_message"
timestamp = str(int(time.time()))# 生成签名
signature = generate_signature(secret_key, message, timestamp)
print(f"Generated Signature: {signature}")# 验证签名
is_valid = verify_signature(secret_key, message, timestamp, signature)
print(f"Is signature valid? {is_valid}")# 模拟延迟,测试签名失效
time.sleep(61)
is_valid_expired = verify_signature(secret_key, message, timestamp, signature)
print(f"Is signature valid after delay? {is_valid_expired}")

2. 时间戳防篡改技术:

描述: 在请求或数据中附加时间戳,并使用加密技术确保时间戳的完整性。
应用: 防止数据篡改和重放攻击。例如,支付系统中的交易请求通常会包含一个签名的时间戳。

3. 令牌(Token)过期机制:

描述: 通过设置令牌的有效期来控制其使用时间,过期后需要重新获取新的令牌。
应用: JWT(JSON Web Token)和OAuth等认证授权机制。JWT通常包含一个有效期字段(exp),服务器会验证令牌是否过期。

4. 基于时间的OTP(一次性密码):

描述: TOTP(基于时间的一次性密码)是一种两步验证机制,通过当前时间生成一次性密码,通常每30秒更新一次。
应用: 用于双因素认证(2FA),提高账户安全性。

import time
import hmac
import hashlib
import struct
import base64def get_totp_token(secret, time_step=30, digits=6):# 将密钥解码为字节key = base64.b32decode(secret, True)# 获取当前时间的步数current_time = int(time.time() // time_step)# 将时间步数打包为字节格式msg = struct.pack(">Q", current_time)# 使用HMAC-SHA1算法生成哈希值h = hmac.new(key, msg, hashlib.sha1).digest()# 提取哈希值的一部分o = h[19] & 15h = (struct.unpack(">I", h[o:o + 4])[0] & 0x7fffffff)print(h)# 获取动态密码的数字部分token = h % (10 ** digits)return str(token).zfill(digits)# 示例使用
secret = "JBSWY3DPEHPK3PXP"  # 这是一个示例密钥,应为双方共享
token = get_totp_token(secret)
print("TOTP Token:", token)
print(token == '')

5. 时间同步协议(NTP):

描述: NTP(网络时间协议)用于同步计算机系统之间的时钟,以确保前后端在同一个时间基准下运行。
应用: 分布式系统和微服务架构中,确保各个服务之间的时间一致性,防止由于时间不同步引起的错误。

6. 基于时间的缓存策略:

描述: 设置缓存数据的有效期(TTL),确保缓存的数据在特定时间内是有效的。
应用: 前端页面缓存和CDN缓存等,通过设定缓存时间来优化性能并减少服务器负载。

这些时间敏感的算法和技术在实际应用中通常会结合使用,以提供更高的安全性和可靠性。例如,在一个RESTful API的交互过程中,可能会同时使用HMAC签名、时间戳防篡改和令牌过期机制来确保请求的安全性和有效性。

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

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

相关文章

万字详解AI开发中的数据预处理(清洗)

数据清洗(Data Cleaning)是通过修改、添加或删除数据的方式为数据分析做准备的过程,这个过程通常也被称为数据预处理(Data Preprocessing)。对于数据科学家和机器学习工程师来说,熟练掌握数据清洗全流程至关…

21_硬件电路基础

目录 组合逻辑电路 组合逻辑电路原理 真值表 布尔代数 门电路 译码器 发光二极管LED 液晶字符显示器LCD 数据选择器 数据分配器 多路开关 时序逻辑电路 时序逻辑电路原理 时钟信号 触发器 电位触发方式触发器 边沿触发方式触发器 寄存器 移位器 计数器 总线…

经营人心:Mrs. B的百年传奇

这个故事的主角是Rose Blumkin,也被称为Mrs. B,她是Nebraska Furniture Mart的创始人。 她的故事确实是一个关于用户思维、客户关系和创业精神的经典案例。 Rose Blumkin于1893年出生在俄罗斯的一个小村庄,她在1921年移民到美国。 1937年&…

ImportError cannot import name ‘uic‘ from ‘PyQt5‘

ImportError cannot import name ‘uic’ from ‘PyQt5’ 1、描述 使用nuitka把PyQt5打包exe文件时报错: ImportError cannot import name ‘uic’ from ‘PyQt5’ 2、原因 这个是由于无法找到uic的目录导致的,在PyQt5的目录下是有uic文件的。 3、解决方案 找到导入uic…

SQL Server 2022的组成

《SQL Server 2022从入门到精通(视频教学超值版)》图书介绍-CSDN博客 SQL Server 2022主要由4部分组成,分别是数据库引擎、分析服务、集成服务和报表服务。本节将详细介绍这些内容。 1.2.1 SQL Server 2022的数据库引擎 SQL Server 2022的…

NGINX+KEEPALIVED | 一文搞懂NG+KL负载均衡高可用架构的实操教程(详细)

文章目录 NGINXKEEPALIVED负载均衡高可用架构为什么需要多节点应用为什么需要Nginx服务为什么需要Keepalived服务NGKL简述前期准备Linux服务器公共环境配置Server1 NGKL服务器配置Server2 NGKL服务器配置Server3 HTTP服务器配置Server4 HTTP服务器配置运行测试用例 NGINXKEEPAL…

使用Keil将STM32部分程序放在RAM中运行

手动分配RAM区域,新建.sct文件,定义RAM_CODE区域,并指定其正确的起始地址和大小。 ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************…

C语言 -- 函数

C语言 -- 函数 1. 函数的概念2. 库函数2.1 标准库和头文件2.2 库函数的使用方法2.2.1 功能2.2.2 头文件包含2.2.3 实践2.2.4 库函数文档的一般格式 3. 自定义函数3.1 函数的语法形式3.2 函数的举例 4. 形参和实参4.1 实参4.2 形参4.3 实参和形参的关系 5. return 语句6. 数组做…

Element中的消息提示组件Message和弹框组件MessageBox

简述:在 Element UI 中,Message和MessageBox都是比较常用的组件,Message用来提示消息,而MessageBox是一个用于创建模态对话框的组件。它可以用于在页面上快速展示信息、警告或错误提示,而不会阻止用户的其他操作。简单…

116-基于5VLX110T FPGA FMC接口功能验证6U CPCI平台

一、板卡概述 本板卡是Xilinx公司芯片V5系列芯片设计信号处理板卡。由一片Xilinx公司的XC5VLX110T-1FF1136 / XC5VSX95T-1FF1136 / XC5VFX70T-1FF1136芯片组成。FPGA接1片DDR2内存条 2GB,32MB Nor flash存储器,用于存储程序。外扩 SATA、PCI、PCI expres…

【期末复习】数据库系统概论(附带考点汇总)

第1章.绪论 目录 第1章.绪论1.1. 数据库系统概述1.1.1.基本概念1.1.2.产生和发展 1.2.概念模型1.2.1.三种模型1.2.2.概念模型1.2.3.关系模型 1.3.数据库系统结构1.3.1三级模式结构1.3.2.两级映像与数据独立性 第2章.关系型数据库2.1.关系2.2.关系操作2.2.1.基本关系操作2.2.2.关…

SALOME源码分析:View Model

作为一款开源的CAx(CAD/CAE/CAM)软件集成平台,为了实现各个Module支持不同的数据显示与交互方案,出于扩展性的考虑,SALOME引入了View Model,用以支持OpenGL、OCC、VTK、ParaView、Qwt等数据显示与交互实现。 本文将以OCCViewer、…

昇思25天学习打卡营第16天|Diffusion扩散模型

导入必要的库函数 import math from functools import partial %matplotlib inline import matplotlib.pyplot as plt from tqdm.auto import tqdm import numpy as np from multiprocessing import cpu_count from download import downloadimport mindspore as ms import mi…

Python基于卷积神经网络分类模型(CNN分类算法)实现时装类别识别项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 在深度学习领域,卷积神经网络(Convolutional Neural Networks, CNNs&#xff0…

【架构-20】死锁

什么是死锁? 死锁(Deadlock)是指两个或多个线程/进程在执行过程中,由于资源的互相占用和等待,而陷入一种互相等待的僵局,无法继续往下执行的情况。 产生死锁的四个必要条件: (1)互斥条件(Mutual Exclusion):至少有一个资源是非共享…

Elasticsearch:结合稀疏、密集和地理字段

作者:来自 Elastic Madhusudhan Konda 如何以自定义方式组合多个稀疏、密集和地理字段 Elasticsearch 是一款强大的工具,可用于近乎实时地搜索和分析数据。作为开发人员,我们经常会遇到包含各种不同字段的数据集。有些字段是必填字段&#x…

relation-graph——数据组装+鼠标移入后的详情(自定义插槽的用法)——js技能提升

最近在写后台管理系统的时候,遇到一个需求,就是给我一些节点,让我渲染到页面上,效果图如下: 之前写过一篇文章关于relation-graph关系图组件http://t.csdnimg.cn/7BGYm的用法 还有一篇关于relation-graph——实现右击…

回溯算法-以单位人事管理系统为例

1.回溯算法介绍 1.来源 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。 用回溯算法解决问题的一般步骤: 1、 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。 2 、确定易于搜…

rk3568 OpenHarmony 串口uart与电脑通讯开发案例

一、需求描述: rk3568开发板运行OpenHarmony4.0,通过开发板上的uart串口与电脑进行通讯,相互收发字符串。 二、案例展示 1、开发环境: (1)rk3568开发板 (2)系统:OpenHar…

又一个被催的相亲对象!家庭不和,是因为智慧不够?——早读(逆天打工人爬取热门微信文章解读)

你相亲过吗? 引言Python 代码第一篇 洞见 家庭不和,是因为智慧不够第二篇 口播结尾 引言 yue 昨天居然忘记了 正事:拍视频j 居然忘记了 别着急 让我找下理由(借口) 前天我妈给我介绍了个相亲对象 推给我了她的微信 我…