我们已决定通过为我们的客户发布iPhone、Android和Blackberry应用程序来开始进行多因素身份验证。思考GoogleAuthenticator的一次性密码系统。我可以了解如何通过使用基于帐户key加上设备序列号(或其他唯一标识符)的SALT进行散列来生成唯一的字符串。但是有没有人知道如何像google那样生成唯一的短号码?和/或是否有人有关于实现此类目标的文章的良好链接?非常感谢 最佳答案 最后我发现这在RFC4226中有很好的记录。关于整数转换,这可以使用按位运算来完成shownonpage7,基本上它与下面的答案中
我正在构建一个基于TOTP/HOTP的双因素身份验证系统。为了验证otp,服务器和otp设备都必须知道共享key。由于HOTP密码与用户密码非常相似,我认为应该应用类似的最佳实践。特别是强烈建议永远不要存储未加密的密码,只保留密码的加盐哈希值。RFC和HOTP/TOTP的python实现似乎都没有涵盖这方面。有没有一种方法可以使用OTP共享key的单向加密,或者这是一个愚蠢的想法? 最佳答案 Isthereawaytouseone-wayencryptionoftheOTPsharedsecret...?不是真的。您可以使用可逆加密
最近我发现thisawesome2-factorauthenticationcodegenerator用Python3编写。我试图将它转换为Swift3,但我在一个特定部分遇到了问题:defget_hotp_token(secret,intervals_no):key=base64.b32decode(secret)msg=struct.pack(">Q",intervals_no)h=hmac.new(key,msg,hashlib.sha1).digest()o=h[19]&15h=(struct.unpack(">I",h[o:o+4])[0]&0x7fffffff)%10000
我正在尝试在Golang中实现HOTP(rfc-4226),但我正在努力生成有效的HOTP。我可以用java生成它,但出于某种原因,我在Golang中的实现是不同的。以下是示例:publicstaticStringconstructOTP(finalLongcounter,finalStringkey)throwsNoSuchAlgorithmException,DecoderException,InvalidKeyException{finalMacmac=Mac.getInstance("HmacSHA512");finalbyte[]binaryKey=Hex.decodeHex