2016-06-01 6 views
0

私はこのhttp://jacob.jkrall.net/totp/をvbscriptに実装しました。Google認証ツールとvbscript

同じ16進数を指定したコードでは、正しい6桁のotpが得られ、その部分が機能しています。

私はHMAC-SHA-1も検証しました。同じ名前の出力は同じ出力を与えます。http://www.freeformatter.com/hmac-generator.html#ad-output

私の時間は、私はotpauth文字列でhttp://www.qr-koder.dk/でQRコードを拡大して生成したhttp://www.currenttimestamp.com/

と同じです:秘密= $ SECRET // TOTP/$のLABELとGoogle認証アプリはコードを読み取り、出力を開始? 30秒ごとに6桁のコードが変更されます。

ただし、アプリケーションのコードは、6桁のコードと一致しません。このコードは、VBSCRIPTを生成します。

私はtrunc(time/30)+/- 7500ステップを試して、それがタイムゾーン/夏時間の問題であるかどうかを確認しましたが、無駄です。 6桁の数字を生成するためのルーチンの他の部分として

は私がこれを理解していないという結論に来ている動作するようです:

QRコード上のURLが

otpauth://totp/$LABEL?secret=$SECRET 
です説明と

SECRETは今両方に知られている 16文字のbase32エンコードされた共有秘密は、ある一方でLABELは、あなたのアプリにキーを記述するために使用することができますクライアントとサーバー。

IはHMAC-SHA-1計算する際に(SECRET、時間()/ 30)

秘密はAPPおよび計算の両方に与えられた同じ文字列でなければなりませんか?

私が1234567890の秘密を選択した場合、base32は、http://emn178.github.io/online-tools/base32_encode.htmlに従ってGEZDGNBVGY3TQOJQです。

私はその後

HMAC-SHA-1("1234567890", time()/30) 

または

HMAC-SHA-1("GEZDGNBVGY3TQOJQ", time()/30) 

を取るべきでしょうか?

私は両方を試したと思うし、どちらも動作しません。

答えて

1

システムのUNIX時間が正しいです。

私の問題はHMAC-SHA-1機能の秘密かもしれないと思います。これは、HMAC-SHA-1が何を期待しているかに大きく依存します。

文字列 "123456790"はバイナリ文字列である可能性があります。それはASCII表現かutf8ですか?私。この文字列は10バイトか20バイトの長さですか?

あなたのVBScriptの右に入力文字列を取得することをお勧めします。

一方、独自のVBScriptを書く代わりに、privacyIDEA認証サーバーのような既製のソリューションを使用することもできます。このサーバーはオープンソースであり、TOTPも付属しています。