一次性密码( One-Time Password ,OTP )是一种密码认证机制,设计用来增强系统的安全性。这种密码只能使用一次,使用后即失效,因此它能有效防止重放攻击(即攻击者复制一次成功的认证尝试来进行恶意登录)。一次性密码广泛应用于银行、在线服务和其他需要高安全性的领域。 原理 TOTP 算法( RFC 6238 ) - 技术实现 密钥共享: 用户和认证服务器在初始设置时共享一个密钥。 时间戳: 使用当前的时间戳,通常以 30 秒为单位。 HMAC 算法: 使用 HMAC (基于哈希的消息认证代码)与共享密钥和时间戳结合生成一个哈希值。 动态截断: 从 HMAC 生成的哈希值中动态选择一部分作为最终的一次性密码。
@NoOneNoBody 就是破解, 感觉只要不是你和对方(通常是服务器),自己泄露了约定的密钥。 想要在不知道密钥的情况下,破解开,基本是没办法的吧。 https://github.com/pquerna/otp
@mocococ #2 它实际就是哈希,现在也没听过能破哈希的(彩虹表不是破,是获得哈希值查表逆向搜索) 黑的话 要么获得客户端唯一标识,让服务器搞不清来源 要么攻击让服务器 otp 失效 好像这两个破的目标都不是 otp 本身,而是这两方的安防系统
算法本身肯定没问题。经常攻击别人的朋友都知道,一个系统的安全性是由最弱的那一环决定的。比如你装了浏览器插件用于查看 OTP ,那么攻击者只需要扫你的浏览器存储位置(之前就有人通过扫浏览器目录直接拿到 cookie 等信息代替用户操作)就可以拿到密钥。