Rimifon 发表于 2016-9-3 08:55:05

JS实现简单的HASH算法

本帖最后由 Rimifon 于 2016-9-7 10:23 编辑

function hash(str) {
        str += "";
        var arr = new Array, len = str.length;
        var arg = Math.SQRT2.toFixed(9) - 0;
        forEach(function(x) { arr = 0; });
        for(var i = 0; i < str.length; i++) calc(str.charCodeAt(i));
        forEach(function(x){
                arr = arr.toString(16);
                if(arr.length < 2) arr = "0" + arr;
        });
        arr.reverse();
        return arr.join("");
        function calc(nmb){
                var c = nmb & 255, next = nmb >> 8;
                forEach(function(x) {
                        var h = (x ? arr : 0) + arr + x + len + c;
                        h += (h / arg).toFixed(9).slice(-3) - 0;
                        arr = h & 255;
                });
                if(next > 0) calc(next);
        }
        function forEach(func) { for(var i = 0; i < 16; i++) func(i); }
}
// 测试结果
console.log(hash("\x00"));
//"f66c78ed57fe3b83eb7bfc5fcf29060e"
console.log(hash("\x01"));
//"5020f05de58d937d38a33b86f6502d35"
console.log(hash("\x02"));
//"4493772230d4090cb79e78f34680455b"
console.log(hash("\x00\x00"));
//"49cf24f9948663e02a919e18d1c40707"
页: [1]
查看完整版本: JS实现简单的HASH算法