我一直在尝试在我开发的应用程序中使用OtpSharp和googleauthenticator。但是,我不明白为什么OtpSharp生成的代码与googleauthenticator的代码不匹配。我甚至尝试过根据我的本地操作系统更正OtpSharp的时间输入,但没有任何运气。另一方面,python中的pyotp库不需要任何特别的努力就可以正常工作。 下面是我使用的代码:
var bSharedKey = System.Text.Encoding.Unicode.GetBytes("TESTTESTTESTTEST");
//var correction = new TimeCorrection(DateTime.UtcNow.ToLocalTime());
//var totp = new Totp(bSharedKey, timeCorrection: correction);
var totp = new Totp(bSharedKey);
var realOtp = totp.ComputeTotp();
long timestep = 0;
var OTPmatch = totp.VerifyTotp(passwords[1], out timestep);
问题是,没有向pyotp库(以及googleauthenticator)提供任意的unicode密钥,而是需要一个Base32字符串作为输入,我假设这个字符串后来被解码为字节数组并由库使用。在
因此,我向OtpSharp提供了任意unicode字符串的字节字符串表示,并使用一个在线网站将unicode字符串解码为base32字符串,并在googleauthenticator中使用base32字符串。在
简单地说,Otpsharp需要一个字节数组来初始化totp对象,而pyotp需要您为它提供base32字符串。在
相关问题 更多 >
编程相关推荐