Edit in JSFiddle

/* Get SHA1 by BinaryString */
function GetSHA1ByBinaryString() {
    try {
        //HTML5 support only
        var reader = new FileReader();
        var file = document.getElementById("fileupload").files[0];
        reader.readAsBinaryString(file);
        reader.onloadend = function (evt) {
            //Get SHA1
            var sha1 = sha_hexdigest(evt.target.result);
            document.getElementById("sha1").innerHTML = sha1;
        };
    } catch (err) {
        document.getElementById("sha1").innerHTML = err;
    }
}

function sha_hexdigest(bytes) {
    var digest = sha_bytes(sha_calculate(sha_ints(bytes), bytes.length * 8));
    var digits = '0123456789abcdef';
    var hex = '';
    for (var i = 0; i < digest.length; i++) {
        var c = digest.charCodeAt(i);
        hex += digits.charAt((c >> 4) & 0xF) + digits.charAt(c & 0xF);
    }
    return hex;
}

function sha_ints(bytes) {
    while (bytes.length % 4 != 0)
    bytes += '\x00';
    var ints = new Array();
    for (var i = 0; i < bytes.length; i += 4) {
        ints[ints.length] = (
        (bytes.charCodeAt(i) & 0xFF) << 24 | (bytes.charCodeAt(i + 1) & 0xFF) << 16 | (bytes.charCodeAt(i + 2) & 0xFF) << 8 | (bytes.charCodeAt(i + 3) & 0xFF));
    }
    return ints;
}

function sha_bytes(ints) {
    var bytes = '';
    for (var i = 0; i < ints.length; i++)
    bytes += String.fromCharCode((ints[i] >> 24) & 0xFF, (ints[i] >> 16) & 0xFF, (ints[i] >> 8) & 0xFF, ints[i] & 0xFF)
    return bytes;
}

function sha_calculate(ints, bitn) {
    while (ints.length * 32 <= bitn) ints[ints.length] = 0;
    ints[ints.length - 1] |= 1 << (31 - bitn % 32)
    while (ints.length % 16 != 14) ints[ints.length] = 0;
    ints[ints.length] = Math.floor(bitn / 0x100000000);
    ints[ints.length] = bitn & 0xFFFFFFFF;

    var h0 = 1732584193,
        h1 = -271733879,
        h2 = -1732584194,
        h3 = 271733878,
        h4 = -1009589776;
    var a, b, c, d, e, f, k, temp, w = new Array(80);
    for (var inti = 0; inti < ints.length; inti += 16) {
        a = h0;
        b = h1;
        c = h2;
        d = h3;
        e = h4;
        for (var i = 0; i < 16; i++) w[i] = ints[inti + i];
        for (; i < 80; i++) w[i] = sha_rol(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16], 1);

        for (var i = 0; i < 80; i++) {
            switch (Math.floor(i / 20)) {
                case 0:
                    f = sha_add(1518500249, (b & c) | ((~b) & d));
                    break;
                case 1:
                    f = sha_add(1859775393, b ^ c ^ d);
                    break;
                case 2:
                    f = sha_add(-1894007588, (b & c) | (b & d) | (c & d));
                    break;
                case 3:
                    f = sha_add(-899497514, b ^ c ^ d);
                    break;
            }
            temp = sha_add(sha_add(sha_rol(a, 5), w[i]), sha_add(e, f));
            e = d;
            d = c;
            c = b;
            b = a;
            a = temp;
            c = sha_rol(c, 30);
        }

        h0 = sha_add(h0, a);
        h1 = sha_add(h1, b);
        h2 = sha_add(h2, c);
        h3 = sha_add(h3, d);
        h4 = sha_add(h4, e);
    }
    return new Array(h0, h1, h2, h3, h4);
}

function sha_add(a, b) {
    var lsw = (a & 0xFFFF) + (b & 0xFFFF);
    var msw = (a >> 16) + (b >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xFFFF);
}

function sha_rol(n, bits) {
    return (n << bits) | (n >>> (32 - bits));
}
<input id="fileupload" type="file" name="fileupload">
<input onclick="javascript: GetSHA1ByBinaryString();" id="check" type="button" value="check SHA1"><div id="sha1"></div>