SpeakEasy に似た JavaScript を使用してHOTPクライアントを作成したい
上記のライブラリは、サーバー側の JavaScript の使用を目的としており、NodeJS を使用します。
ブラウザのフロントエンド JavaScript で同じことをしたいのですが、CryptoJS を使用してこの動作を実現できませんでした。
var key = "abc";
var counter = "123";
// create an octet array from the counter
var octet_array = new Array(8);
var counter_temp = counter;
for (var i = 0; i < 8; i++) {
var i_from_right = 7 - i;
// mask 255 over number to get last 8
octet_array[i_from_right] = counter_temp & 255;
// shift 8 and get ready to loop over the next batch of 8
counter_temp = counter_temp >> 8;
}
// There is no such class called as Buffer on Browsers (its node js)
var counter_buffer = new Buffer(octet_array);
var hash = CryptoJS.HmacSHA1(key,counter_buffer);
document.write("hex value "+ hash);
document.write("hash value "+ CryptoJS.enc.Hex.stringify(hash));
Java (android) や Objective C (ios) などのネイティブ プラットフォームでこれが可能であることはわかっています。Objective C での対応する HOTPの実装は次のとおりですが、Web ベースのフロント エンドで実行できるかどうかは疑問です。
また、JavaScriptはどのブラウザからでも表示できるため、ブラウザでそのようなことが安全かどうかは非常に疑問です。入力の提案は役に立ちます。私はPOCのためにこれをやっています。Web ベースのプラットフォームで Hotp を使用したことがある人がいるかどうか知りたいです。