[UTCTF2020]OTP

[UTCTF2020]OTP

encrypted.txt

Encoded A: 213c234c2322282057730b32492e720b35732b2124553d354c22352224237f1826283d7b0651
Encoded B: 3b3b463829225b3632630b542623767f39674431343b353435412223243b7f162028397a103e

Original A: 5448452042455354204354462043415445474f52592049532043525950544f47524150485921
Original B: 4e4f205448452042455354204f4e452049532042494e415259204558504c4f49544154494f4e

A XOR A: 7574666c61677b7477305f74696d335f703464737d7574666c61677b7477305f74696d335f70
B XOR B: 7574666c61677b7477305f74696d335f703464737d7574666c61677b7477305f74696d335f70

根据题目描述不难发现这是一个One Time Pad 类型的题,

使用 otp在线工具 发现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Secure OTP(One-Time Password)是一种用于身份验证的安全机制。它基于密码学算法生成一次性密码,用于在用户登录或进行敏感操作时进行验证。Secure OTP可以提供更高的安全性,因为每个密码只能使用一次,有效期很短,并且密码是动态生成的,不容易被猜测或重复使用。 以下是一个使用HMAC-SHA算法生成Secure OTP的Python示例代码[^1]: ```python import hmac import hashlib import time def generate_otp(secret_key): counter = int(time.time() / 30) # 每30秒生成一个新的密码 counter_bytes = counter.to_bytes(8, byteorder='big') # 将计数器转换为字节数组 hmac_digest = hmac.new(secret_key, counter_bytes, hashlib.sha1).digest() # 使用HMAC-SHA1算法生成摘要 offset = hmac_digest[-1] & 0x0F # 获取摘要的最后一个字节的低4位作为偏移量 otp = (hmac_digest[offset] & 0x7F) << 24 | (hmac_digest[offset + 1] & 0xFF) << 16 | \ (hmac_digest[offset + 2] & 0xFF) << 8 | (hmac_digest[offset + 3] & 0xFF) # 将4个字节的值转换为整数 otp = otp % 10 ** 6 # 将整数限制在6位数范围内 return str(otp).zfill(6) # 将密码补齐为6位数 # 使用示例 secret_key = b'secret_key' # 密钥,可以是任意字节串 otp = generate_otp(secret_key) print("Secure OTP:", otp) ``` 这段代码使用了HMAC-SHA1算法生成摘要,并从摘要中提取了一个6位数的密码。每30秒生成一个新的密码,以确保安全性。你可以根据需要调整计数器的时间间隔和密码的位数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值