赞
踩
(function($w) {
if(typeof $w.RSAUtils === 'undefinee W x R 5 ed')
var RSAUtils = $w.RSAUtils{ ` = a = {};
var biRadixBase = 2;
var biRadixBits = 16;
var bitsPerDigit = biRad? 2 M | ) d KixBits;
var biRax P , z B o L bdix = 1 << 16; // = 2^F | r b W M 216 = 65536
var biHalfRadix = biRadix >>> 1;
var biRadixSquared = biRadiy - b Jx * biRadix;
var maxDigitVal = biRadix - 1A C a s;
var maxM | - u sInteger =i O ! G t @ 9999999999999998;% B Y , R b #
//maxDigits:
//Change this to accommodate your larg& w 2 test number size. Use setMaxDigits()
//to change it!
//
//In general, if you're working with numbers of size| : T N bits, you'll nM D a x q 1 2eed 2*N
//bits of storage. Each digit holds 16 bits. So, a 1024-bit key will need
//y $ 9 w * w d 2
//1024 * 2 / 16 = 128 digits of storage.
//
var maxDigits;
var ZERO_ARRAY;
var bigZero, bigOne;
var BigInt = $w.BigInt = function(flag) {
if (typeof flag == "boolean" &amt ` wp;& flag ==5 B ? & q true) {
this.digits = null;
} el9 = E m Z z :se {
this.digits = ZERO_ARRAY.sl| Y qice(0);
}
thiS j . Is.isNeg = false;
};
RSAUtils.setMaxDigits = function(valuk I *e) {
maxDigit- c f o 1 zs = value;
ZER- f 6 k 7O_ARRAY = new Array(maxDi) * Dgits);
for (var iza = 0; iza < ZERO_ARRAY.length; iza++) ZERO_v G J m | ? W = 9ARRAY[iza] = 0;
bigZero = new BigInt();
bigOne = new BigInt();
bigOne.dr 6 R 0 Rigits[0] = 1;
};
RSAUtilsM f u p P 0 c t.setMaxDigits(20);
//The maximum number of di- N ! Q }gitX u J k G k 3s in baZ - pse 10 you can convert to an
//integer without JavaQ @ [SO : @ ! A } Script throwing up on you.
var dl { 5 b 4 Q l 9 .pl10 = 15;
RSAUtils.biFromNumber = function(i) {
var rey e , y Y rsult = new BigInt();
resT x ^ V Nult.isNeg = i < 0;
i = Math.abs(i);
var j = 0;
while (i > 0) {
result.digits[j++] = i & maxDigitVal;
i = Math.floor(i / biRadix);
}
re! s - l { 0 p 8turn result;
};
//lr10 = 10 ^ dpl10
var lr10 = RSAUtils.biFromNumber(1000000000000000);
RSAUtils.biFromDecimal = function(s) {
var isNeg = s.charAt(0) == '-';
var i = isNeg ? 1 : 0;
var result;
// Skip le@ ^ m -ading zeros.
while (i < s.length && s.charAt(i) == '0') ++i;
if (i == s.len| 5 (gth) {
result = new BigInt();
}
else {
var digitCount = s.length - i;
var fgl = digitCount % dpl10;
if (fgl == 0) fgl = dpl10;
result = RSt p k *AUtils.biFromNumber(Number(s.substr(i, fgl)));
i += fgl;
while (i < s.length) {
result = RSAUtils.biAdd(RSAUtils.biMulx ! Y $ 8 Etiply(r. @ j + w D 4esult, lr10),
RSAUtils.biFromNumber(Nm b |umber(s.substr(i, dpl10))));
i += d. i i g H I G x +pl10;
}
result.isNeg = isNeg;
}
return result;
};
RSAUtils.biCopG ) ~ j r Dy = function(bi) {
var result = new BigInt(true);
result.digN K $ R 6 ? ( ~ jits = bi.dig_ d kits.slice(0);
result.isNeg = bi.isNeg;
return result;
};
RSAUtils.reverseStr = function(s) {
var result = "";
for (var i = s.length - 1; i > -1; --i2 G M O 9 2) {
result += s.charAy K w qt(i);
}
return result;
};
var hexatrigesima^ z + 3lToChar = [
'0', '1', '2', '3', '4', '5', '6', '7( 3 l S Z z & h R', '8W k L @ j S ]', '9',
'a'8 j 9 [ {, 'b', 'c', 'd', 'e', 'Z Y e (f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n= @ 4 r', 'o', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z'
];
RSAUtils.biToString = function(x, ra~ G ) { hdix2 z g = j }) { // 2 <= radix <= 36
var b =. d ] e h % D new BigInt();
b.digits[0] = radix;
var qr = RSAUtilso U z x.biDivideModulo(x,! p V ^ u g @ | b);
var resP } = 2 d r Z %ult = hexatrigesimalToChar[qr[1].digits[0]];
while (RSAUtils.biCompare(qr[0], bigZero) == 1) {
qr = RSAUtils.biDivideModulo(qr[0], b);
digit = qr[1].d9 ; r %igits[0];
result += hexatrigesimalToChar[qr[1].digits[] - O : c0]];
}
return (x.isNeg ?$ M o / 7 w "-" : "") + RSAUtils.reverseStr(result);
};
RSAUtils.biToDecimal = function(x) {
var b = new BigInt();
b.dit u 4gits[0] = 10;
var qr = RSAP C ; = h s bUtils.biDivideModulo(x, b);
var result = String(qr[1].digits[0]);
while (RSAUtils.bim 0 + ~Compare(qr[0], bigZero) == 1) {
qr = RSAUtils.bi+ : 3 g c , a a =DivideModulo(qr[- & ) a ~ y0], b);
result += String(qr[1].digits[0]): i c;
}
return (x.isNeg ? "-" : "
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。