节点需要第三方脚本

时间:2018-10-26 10:57:09

标签: javascript node.js

每次收到新密码时,我都需要获取一次Google密码。

也请check here

我想在我的app.js(服务器端Java脚本文件)中使用this code。我一直在努力弄清楚,但无法做到。

我复制并粘贴到该网站中的所有代码,并在同一目录下创建并需要它。

我尝试过:

myKey = '**my_key_is_here';
require('./sha.js');


function dec2hex(s) { return (s < 15.5 ? '0' : '') + Math.round(s).toString(16); }
function hex2dec(s) { return parseInt(s, 16); }

function base32tohex(base32) {
    var base32chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
    var bits = "";
    var hex = "";

    for (var i = 0; i < base32.length; i++) {
        var val = base32chars.indexOf(base32.charAt(i).toUpperCase());
        bits += leftpad(val.toString(2), 5, '0');
    }

    for (var i = 0; i + 4 <= bits.length; i += 4) {
        var chunk = bits.substr(i, 4);
        hex = hex + parseInt(chunk, 2).toString(16);
    }
    return hex;

}

function leftpad(str, len, pad) {
    if (len + 1 >= str.length) {
        str = Array(len + 1 - str.length).join(pad) + str;
    }
    return str;
}

function updateOtp() {

    var key = base32tohex(myKey);
    var epoch = Math.round(new Date().getTime() / 1000.0);
    var time = leftpad(dec2hex(Math.floor(epoch / 30)), 16, '0');

    // updated for jsSHA v2.0.0 - http://caligatio.github.io/jsSHA/
    var shaObj = new jsSHA("SHA-1", "HEX");
    shaObj.setHMACKey(key, "HEX");
    shaObj.update(time);
    var hmac = shaObj.getHMAC("HEX");

    if (hmac == 'KEY MUST BE IN BYTE INCREMENTS') {
        console.log('something wrong with HMAC');
    } else {
        var offset = hex2dec(hmac.substring(hmac.length - 1));
        var part1 = hmac.substr(0, offset * 2);
        var part2 = hmac.substr(offset * 2, 8);
        var part3 = hmac.substr(offset * 2 + 8, hmac.length - offset);
    }

    var otp = (hex2dec(hmac.substr(offset * 2, 8)) & hex2dec('7fffffff')) + '';
    otp = (otp).substr(otp.length - 6, 6);


    var test = otp;
    console.log(test);

}

function timer() {
    var epoch = Math.round(new Date().getTime() / 1000.0);
    var countDown = 30 - (epoch % 30);
    if (epoch % 30 == 0) updateOtp();
    // $('#updatingIn').text(countDown);
}

function startFactor() {
    updateOtp();
    setInterval(timer, 1000);
};
startFactor();

但获得此输出:

ReferenceError: jsSHA is not defined

基本问题是:如何在我的Nodejs项目中使用this file

2 个答案:

答案 0 :(得分:1)

使用speakeasy是如此简单! 那就是我所需要的。

已解决。

答案 1 :(得分:0)

从npm repo安装它:

npm install jssha --savenpm install jssha --save-dev

然后要求:

jsSHA = require("jssha");