OtpSharp не работает с аутентификатором Google - PullRequest
0 голосов
/ 08 октября 2018

Я пытался использовать OtpSharp вместе с Google Authenticator в приложении, которое я разрабатываю.Однако я не понимаю, почему код, созданный OtpSharp, не соответствует коду Google Authenticator.Я даже безуспешно пытался исправить ввод времени в OtpSharp в соответствии с моей локальной ОС.С другой стороны, библиотека pyotp из python прекрасно работает без особых усилий.Вот код, который я использую:

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);

1 Ответ

0 голосов
/ 10 октября 2018

Проблема заключалась в том, что вместо предоставления произвольного ключа Unicode для библиотеки pyotp (а также для Google Authenticator) в качестве входных данных была необходима строка Base32, которая, как я полагаю, позже была декодирована в байтовый массив и использоваласьlibrary.

Поэтому я предоставил OtpSharp представление строки байтов произвольной строки Unicode и использовал онлайн-сайт для декодирования строки Unicode в строку base32 и использовал строку base32 в Google Authenticator.

Проще говоря, Otpsharp требует байтовый массив для инициализации объекта totp, в то время как pyotp требует, чтобы вы предоставили ему строку base32.

...