南昌建站,网络软文范例,wordpress扫码提交数据库,html5中国网站欣赏前后端交互常用的时间敏感算法
前后端交互中涉及时间敏感的算法主要用于确保数据传输的安全性、有效性和同步性。以下是一些常见的时间敏感算法和技术#xff1a;
1. 基于时间戳的签名算法#xff08;HMAC#xff09;#xff1a;
描述#xff1a; HMAC#xff08;哈希…前后端交互常用的时间敏感算法
前后端交互中涉及时间敏感的算法主要用于确保数据传输的安全性、有效性和同步性。以下是一些常见的时间敏感算法和技术
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_window60):# 获取当前时间戳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(fGenerated Signature: {signature})# 验证签名
is_valid verify_signature(secret_key, message, timestamp, signature)
print(fIs signature valid? {is_valid})# 模拟延迟测试签名失效
time.sleep(61)
is_valid_expired verify_signature(secret_key, message, timestamp, signature)
print(fIs signature valid after delay? {is_valid_expired})2. 时间戳防篡改技术
描述 在请求或数据中附加时间戳并使用加密技术确保时间戳的完整性。 应用 防止数据篡改和重放攻击。例如支付系统中的交易请求通常会包含一个签名的时间戳。
3. 令牌Token过期机制
描述 通过设置令牌的有效期来控制其使用时间过期后需要重新获取新的令牌。 应用 JWTJSON 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_step30, digits6):# 将密钥解码为字节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签名、时间戳防篡改和令牌过期机制来确保请求的安全性和有效性。