你发的这个算法有问题吧。。直接死循环了,计算半天没出结果,没有报错

解决方案 »

  1.   

    代码错误导致死循环,而且应该依赖了其他类库,没有导入        function BarrettMu_modulo(x) {
                var dmath = RSAUtils;
                var q1 = dmath.biDivideByRadixPower(x, this.k - 1);
                var q2 = dmath.biMultiply(q1, this.mu);
                var q3 = dmath.biDivideByRadixPower(q2, this.k + 1);
                var r1 = dmath.biModuloByRadixPower(x, this.k + 1);
                var r2term = dmath.biMultiply(q3, this.modulus);
                var r2 = dmath.biModuloByRadixPower(r2term, this.k + 1);
                var r = dmath.biSubtract(r1, r2);
                if (r.isNeg) {
                    r = dmath.biAdd(r, this.bkplus1);
                }
                var rgtem = $dmath.biCompare(r, this.modulus) >= 0;/////// $dmath这个没有找到
                while (rgtem) {
                    r = dmath.biSubtract(r, this.modulus);
                    rgtem = dmath.biCompare(r, this.modulus) >= 0;
                }
                return r;
            }
            RSAUtils.encryptedString = function (key, s) {
                var a = [];
                var sl = s.length;
                var i = 0;
                while (i < sl) {
                    //a = s.charCodeAt(i);///////////////这句有问题,应该是将s拆分为单个字符放到数组中
                    a[i] = s.charCodeAt(i);
                    i++;
                }            while (a.length % key.chunkSize != 0) {//如果是上面的代码,length为undefined就会在这里死循环了
                    a[i++] = 0;
                }