版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
寫程序時(shí)一般是通過form表單或者ajax方式將參數(shù)提交到服務(wù)器進(jìn)行驗(yàn)
證,如何防止提交的請求不被抓包后串改,雖然無法說絕對安全卻給非法提交
提高了難度,本篇采用jsencypt在前端進(jìn)行加密的并且用C#在后端解密,在
投票提交分?jǐn)?shù)等H5應(yīng)用上可以使用的上,并且進(jìn)行簡單的封裝。
l.demo
IH52劫后右出左度一卜,你就冗道且切止式I旦邊玄電.三運(yùn)后臺(tái)W懣售公眾¥色
Texttoencrypt:
name:
password(
submit
<!DOCTYPEhtml>
<htmlxmlns="hlIp:〃www.w3.org/1999/xhtnil/z>
<hoad>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8”/>
<scriptsrc=,7Scripts/jqucry-l.10.2.min.js,z></script>
<scriptsrc=,7Scripts/JsEncryptHelper.js"></script>
</head>
<body>
</body>
</html>
<body>
<formid=/,forml>
<div>
<label>PublicKey</labelXbr/>
<labelfor="input/'>Texltoencrypt:</label><br/>
name:<inputid="uscrnamo"namc=/,usernamc/,type=,,textz,></input><br
/>
password:<inputid="passwd"name=/,passwd/,type=,,passworcl,/></input><
br/>
<inputid=,/testme/,type="button"value="submit"/Xbr/>
</div>
</form>
</body>
<script>
$(function(){
$C#testme,).click(function(){
console,log("開始發(fā)送數(shù)據(jù)請求”);
vardata={);
data,username=$('#usernamc,).val();
data,passwd=$('#passwd,).val();
console,log("加密前數(shù)據(jù):“,JSON.stringify(data));
varresult=$.encryptRequest({
data:data
});
console.log("加密后數(shù)據(jù):",JSON.stringify(result));
$.ajax({
url:r/Yhz/TestDecrypt,,
dataType:'jsonp',
type:*post*,
data:result,
success:function(res)
(
console.log("服務(wù)端解密成功:",JSON.stringify(res));
)
})
});
));
</script>
輸入賬號(hào)密碼后加密后到服務(wù)端解密后返回
2.客戶端
寫一個(gè)JsEncryptHelper.js以后需要加密的頁面都可以應(yīng)用
varJSEncryptExports=();
(function(exports){
/*
*提示:該行代碼過長,系統(tǒng)自動(dòng)注釋不進(jìn)行高亮。一健復(fù)制會(huì)移除系統(tǒng)注釋
*functionBiginteger(a,b,c){null!=a&&("number'==typeofa?this.from
Number(a,b,c):null==b&&"string"!=typeofa?this.fromString(a,256):
this.fromString(a,b))}functionnbi(){returnnewBiginteger(null)}functi
onami(a,b,c,d,e,f)(for(;—f>=0;){varg=b*this[a++]+c[d]+
e;e=Math.floor(g/67108864),c[d++]=67108863&g}returne}functionam
2(a,b,c,d,e,f){for(varg=32767&b,h=b?15;-f>=0;){vari=
32767&this[a],j=this[a++]?15,k=h*i+j*g;i=g*i+((32767&
k)?15)+c[d]+(1073741823&e),e=(i?>30)+(k?>15)+h*j+(e
?>30),c[d++]=1073741823&i}returne}functionam3(a,b,c,d,e,f)
{for(varg=16383&b,h=b?14:—f>=0:){vari=16383&this[a],j
=this[a++]?14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c[c]+
e,e=(i?28)+(k?14)+h*j,c[d++]=268435455&i}returne}funct
ionint2char(a){returnBIRM.charAt(a)}functionintAt(a,b){varc=BIRC
[a.charCodeAt(b)];returnnul1==c?-1:c}functionbnpCopyTo(a){for(var
b=this,t-1;b>=0;-b)a[b]=thisFb];a.t=this,t,a.s=this,s}func
tionbnpFromlnt(a){this,t=1,this,s=0>a?-1:0,a>0?this[0]=a:
-1>a?this[0]=a+DV:this,t=0?functionnbv(a){varb=nbi();retu
rnb.fromlnt(a),b}functionbnpFromString(a,b){varc;if(16==b)c=4;
elseif(8==b)c=3;elseif(256==b)c=8;elseif(2==b)c=1;else
if(32==b)c=5;else(if(4!=b)returnvoidthis.fromRadix(a,b);c=2
}this,t=0,this,s=0;for(vard=a.length,e=!1,f=0;-d>=0;){v
arg=8==c?255&a「d]:intAt(a,cl);0>g?"-"==a.charAt(d)&&(e=!
0):(e=!1,0==f?this[this.t++]=g:f+c>this.DB?(this[this.t-1]
(g&(1?this.DB-f)-1)?f,this[this.t++]=g>>this.DB-f):thi
s[this.t-1J|=g?f,f+=c,f>=this.DB&&(f-=this.DB));8==c&&0
!=(128&a[0])&&(this.s=-1,f>0&&(this[this.t-1]|=(1?this.DB-
f)-1?f)),this.clampO,e&&Biginteger.ZERO.subTo(this,this)}function
bnpClcimpO(for(vara=this,s&this.DM;this.t>0&&this[this.t1]==
a;)-this.t}functionbnToString(a){if(this.s<0)return+this.negate
().toStrin晨a);varb;if(16==a)b=4;elseif(8==a)b=3;elseif(2=
=a)b=1;elseif(32==a)b=5;else{if(4!=a)returnthis.toRadix(a);
b=2}varc,d=(1?b)-1,e=!1,f=g=this,t,h=this.DB-g*
this.DB%b;if(g—>0)for(h<this.DB&&(c=this[g]?h)>0&&(e=!
0,f=int2char(c));g>=0;)b>h?(c=(this[g]&(1<<h)-1)?b-h,
c=this[—g]?(h+=this.DB-b)):(c=this[g]?(h-=b)&d,0>=h&&
(h+=this.DB,-g)),c>0&&(e=!0),e&&(f+=int2char(c));returne?f
:"0"}functionbnNegateO{vara=nbi();returnBiginteger.ZERO.subTo(thi
s,a),a}functionbnAbsO{returnthis,s<0?this,negate():this}functi
onbnCompareTo(a){varb=this,s-a.s;if(0!=b)returnb;varc=this,t;
if(b=c-a.t,0!=b)returnthis,s<0?-b:b;for(;-c>=0;)if(0!
=(b=this[c]-a[c]))returnb;return0}functionnbits(a)(varb,c=1;
return0!=(b=a?>16)&&(a=b,c+=16),0!=(b=a?8)&&(a=b,c
+=8),0!=(b=a?4)&&(a=b,c+=4),0!=(b=a?2)&&(a=b,c+=
2),0!=(b=a?1)&&(a=b,c+=1),c}functionbnBitLength(){returnt
his.t<=0?0:this.DB*(this,t-1)+nbits(this[this.t-1]八this,s&thi
s.DM)}functionbnpDLShiftTo(a,b){varc;for(c=this,t-1;c>=0;-c)
b[c+a]=this[c];for(c=a-1;c>=0;-c)b[c]=0;b.t=this,t+a,b.
s=this,s}functionbnpDRShiftTo(a,b){for(varc=a;c<this.t;++c)b[c
-a]=this[c];b.t=Math,max(this,t-a,0),b.s=this.s}functionbnpLShi
ftTo(a,b){varc,d=a%this.DB,e=this.DB-d,f=(1?e)-1,g=Mat
h.floor(a/this.DB),h=this,s<<d&this.DM;for(c=this,t-1;c>=0;
-c)b[c+g+1]=this[c]?e|h,h=(this[c'&f)?d;for(c=g-1;c
>=0;-c)b[c]=0;b[g]=h,b.t=this,t+g+1,b.s=this,s,b.clampO)
functionbnpRShiftTo(a,b){b.s=this.s;varc=Math.floor(a/this.DB);if
(c>=this,t)returnvoid(b.t=0);vard=a%this.DB,e=this.DB-d,f=
(1<<d)-1;b[0]=this[c]?d;for(varg=c+1;g<this.t;++g)b[g-
c-1]|=(this[g]&f)<<e,b[g-c]=this[g]>>d;d>0&&(b[this.t-c
1]|=(this,s&f)?e),b.t=this,t-c,b.clampO}functionbnpSubTo(a,
b){for(varc=0,d=0,e=Math,min(a.t,this,t);e>c;)d+=thisfc]-
a[c],b[c++]=d&this.DM,d?=this.DB;if(a.t<this,t){for(d-=a.s;c
<this,t;)d+=this[c],b[c++]=d&this.DM,d?=this.DB;d+=this.s}el
se{for(d+=this,s;c<a.t;)d-=a[c],b[c++]=d&this.DM,d?=this.D
B;d-=a.s}b.s=0>d?-1:0,-1>d?b[c++]=this.DV+d:d>0&&(b
[c++]=d),b.t=c,b.clamp())functionbnpMultiplyTo(a,b){varc=this,ab
s(),d=a.abs(),e=c.t;for(b.t=e+d.t;—e>=0;)b[e]=0;for(e=0;
e<d,t;++e)b[e+c.t]=c.am(0,d[e],b,e,0,c.t);b.s=0,b.clamp(),th
is.s!=a.s&&BigInteger.ZERO.subTo(b,b)}functionbnpSquareTo(a){for(var
b=this.absO,c=a,t=2*b.t;-c>=0;)a[c]=0;for(c=0;c<b.t-
1;++c){vard=b.am(c,b[c],a,2*c,0,1);(a[c+b.t]+=b.am(c+1,2*
b[c],a,2*c+1,d.b.t-c-1))>=b.DV&&(a[c+b.t]-=b.DV,a[c'+b.t
+1]=1)}a.t>0&&(a[a.t-1]+=b.am(c,b[c],a,2*c,0,1)),a.s=0,
a.clamp()}functionbnpDivRemTo(a,b,c)[vard=a.abs();if(!(d.t<=0))
{vare=this.abs();if(e.t<d.t)returnnull!=b&&b.fromlnt(0),void(nu
11!=c&&this.copyTo(c));null==c&&(c=nbi());varf=nbi(),g=this,
s,h=a.s,i=this.DB-nbits(d[d.t-1]);i>0?(d.!ShiftTo(i,f),e.IShif
tTo(i,c)):(d.copyTo(f),e.copyTo(c));varj=f.t,k=f[j-1];if(0!=k)
{var1=k*(1?this.Fl)+(j>1?f[j-2:?this.F2:0),m=this.FV
/1,n=(1?this.Fl)/1,o=1?this.F2,p=c.t,q=p-j,r=null==
b?nbi():b;for(f.dlShiftTo(q,r),c.compareTo(r)>=0&&(c[c.t++]=1,c.
subTo(r,c)),Biginteger.ONE.dlShiftTo(j,r),r.subTo(f,f);f.t<j;)f[f.t+
+]=0;for(;一q>=0;){vars=c[―p]==k?this.DM:Math.floor(c[p]*m
+(c[p-1]+o)*n);if((c[p]+=f.am(0,s,c,q,0,j))<s)for(f.dlShif
tTo(q,r),c.subTo(r,c);c[p]<-s;)c.subTo(r,c)}nul1!=b&&(c.drShift
To(j,b),g!=h&&Biginteger.ZERO.subTo(b,b)),c.t=j,c.clampO,i>0&&
c.rShiftTo(i,c),0>g&&Biginteger.ZERO.subTo(c,c)}}}functionbnMod(a)
{varb=nbi0;returnthis,abs().divRemTo(a,null,b),this,s<0&&par
eTo(Biginteger.ZERO)>0&&a.subTo(b,b),b}functionClassic(a){this,n=a
}functioncConvert(a){returna.s<0a.compareTo(this.m)>=0?a.mod(th
is.m):a}functioncRevert(a){returna}functioncReduce(a){a.divReniTo(t
his.m,null,a)}functioncMulTo(a,b,c){a.multipl)rTo(b,c),this,reduce(c)
}functioncSqrTo(a,b){a.sqUcireTo(b),this,reduce(b)}functionbnpInvDigit
(){if(this,t<1)return0;vara=this[01;if(0==(1&a))return0;var
b=3&a;returnb=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)
&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%t
his.DV)%this.DV,b>0?this.DV-b:-b}functionMontgomery(a){this,m=
a,this,mp=a.invDigit(),this,mpl=32767&this,mp,this,mph=this.mp?1
5,this,um=(1?a.DB-15)-1,this.mt2=2*a.t}functionmontConvert(a)
{varb=nbi();returna.abs().dlShiftTo(this.m.t,b),b.divRemTo(this,m,nul
1,b),a.s<0&&b.compareTo(Biginteger.ZERO)>0&&this.m.subTo(b,b),hjf
unctionmontRevert(a){varb=nbi();returna.copyTo(b),this,reduce(b),b}
functionmontRcduce(a)(for(;a.t<=this.mt2;)a[a.t++]=0;for(varb=0;
b<this.m.t;++b){varc=32767&a[b],d=c*this,mpl+((c*this.nph+
(a[b]?15)*this,mpl&this,um)<<15)&a.DM;for(c=b+this.m.t,a[c]
+=this.m.am(0,d,a,b,0,this.m.t);a[c]>=a.DV;)a[c]-=a.DV,a[++c]++}
a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this,m)>=0&&a.subTo(this.
m,a)}functionmontSqrTo(a,b){a.squareTo(b),this,reduce(b)}functionmon
tMulTo(a,b,c)(a.multiplyTo(b,c),this.reduce(c)}functionbnpIsEven(){r
eturn0==(this.t>0?1&this[0:this.s)}functionbnpExp(a,b){if(a
>42949672951>a)returnBiginteger.ONE;varc=nbi(),d=nbi(),e=b.
convert(this),f=nbits(a)-1;for(e.copyTo(c);-f>=0;)if(b.sqrTo(c,
d),(a&1?f)>0)b.mulTo(d,e,c);else{varg=c;c=d,d=g}return
b.revert(c))functionbnModPowInt(a,b){varc;returnc=256>aIIb.isEv
en()?newClassic(b):newMontgomery(b),this,exp(a,c)}functionbnCloneO
{vara=nbi0;returnthis.copyTo(a),a)functionbnlntValueO{if(this,s
<0)(if(1==this.t)returnthis[0!-this.DV;if(0==this.t)return-1}
else(if(1==this,t)returnthis[0l;if(0==this,t)return0]return(thi
s[ll&(1?32-this,DB)-1)?this.DBthis[0'}functionbnByteValueO
(return0==this.t?this,s:this[0]<<24?24}functionbnShortValueO
{return0==this.t?this.s:this[0]<<16?16}functionbnpChunkSize(a)
{returnMath,floor(Math.LN2*this.DB/Math,log(a))}functionbnSigNumO{r
eturnthis,s<0?-1:this,t<=01=this.t&&this[0]<=0?0:1}fu
notionbnpToRadix(a)[if(null=a&&(a=10),0==this.signumO2>a|
a>36)return"0";varb=this.chunkSize(a),c=Math.pow(a,b),d=nbv
(c),e=nbi(),f=nbi(),g=for(this.divRemTo(d,e,f);e.signumO>
0;)g=(c+f.intValueO).toString(a).substr(l)+g,e.divRemToCd,e,「);retu
rnf.intValueO.toString(a)+g}functionbnpFromRadix(a,b){this,fromlnt
(0),null==b&&(b=10);for(varc=this.chunkSize(b),d=Math.pow(b,c),
e=!1,f=0,g=0,h=0;h<a.length;++h){vari=intAt(a,h);0>i?
"-"=a.charAt(h)&&0=this.signumO&&(e=!0):(g=b*g+i,++f>=
c&&(this.dMultiplyCd),this.dAddOffset(g,0),f=0,g=0))}f>0&&(thi
s.dMultiply(Math.pow(b;f)),this.dAddOffset(g,0)),e&&Biginteger.ZERO.subTo
(this,this))functionbnpFromNumber(a,b,c){if("number"==typeofb)if
(2>a)this,fromlnt(1);elsefor(this.fromNumber(a,c),this.testBit(a-1)
this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),opor,this),this.isEvenO&
&this.dAddOffset(1,0);!this.isProbablePrime(b);)this.dAddOffset(2,0),th
is.bitLengthO>a&&this.subTo(BigInteger.ONE.shiftLeft(a-1),this);else
{vard=newArray,e=7&a;d.length=(a?3)+1,b.nextBytes(d),e>0
?d[0:&=(1?e)-1:d[01=0,this.fromString(d,256))}functionbnToBy
teArray(){vara=this,t,b=newArray;b[0l=this,s;varc,d=this.DB-
a*this.DB%8,e=0;if(a->0)for(d<this.DB&&(c=this[a]?d)!=
(this.s&this.DM)?d&&(b[e++J=c|this,s?this.DB-d);a>=0;)8>
d?(c=(this[a]&(1?d)-1)?8-d,c|=this[—a]?(d+=this.DB-
8)):(c=this[a]?(d-=8)&255,0>=d&&(d+=this.DB,-a)),0!=(128
&c)&&(c|=-256),0==e&&(128&this,s)!=(128&c)&&++e,(e>0Ic
!=this,s)&&(b[e++]=c);returnb)functionbnEquals(a){return0==thi
s.compareTo(a)}functionbnMin(a){returnpareTo(a)<0?this:a}
functionbnMax(a){returnthis.compareTo(a)>0?this:a)functionbnpBitwi
seTo(a,b,c){vard,e,f=Math,min(a.t,this,t);for(d=0;f>d;++d)c
[d]=b(this[d],a[d]);if(a.t<this,t){forte=a.s&this.DM,d=f;d<
this.t;++d)c[d]=b(this[d],e);c.t=this.t}else{for(e=this.s&thi
s.DM,d=f;d<a.t;++d)c[d]=b(e,a[d]);c.t=a.t}c.s=b(this.s,a.s),
c.clamp()}functionopand(a,b){returna&b}functionbnAnd(a)(varb=
nbi();returnthis.bilwiseTo(a,op_and>b),b}functionop_or(a,b){return
ab}functionbnOr(a)(varb=nbi();returnthis.bitwiseTo(a,opor,b),b
}functionopxor(a,b){returna*b}functionbnXor(a){varb=nbi();re
turnthis.bitwiseTo(a,opxor,b),b}functionopandnot(a,b){returna&'b
}functionbnAndNot(a){varb=nbi();returnthis.bitwiseTo(a,op_andnot,
b),b}functionbnNotO{for(vara=nbi0,b=0;b<this,t;++b)a[b]=t
his.DM&'this[b];returna.t=this,t,a.s="this,s,a}functionbnShiftLeft
(a){varb=nbi();return0>a?this.rShiftTo(a,b):this.lShiftTo(a,b),
b}functionbnShiftRight(a){varb=nbi();return0>a?this.lShiftTo(-a,
b):this.rShiftTo(a,b),b?functionIbit(a);if0(==a)return-1;varb
-0;return0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a?=
8,b+=8),0=(15&a)&&(a?=4,b+=4),0=(3&a)&&(a?=2,b+=
2),0==(1&a)&&++b,b}functionbnGetLowestSetBit(){for(vara=0;a<
this.t;++a)if(0!=this[a])returna*this.DB+Ibit(this[a]);returnthi
s.s<0?this.t*this.DB:-1}functioncbit(a){for(varb=0;0!=a;)a
&=a-1,++b;returnb}functionbnBitCount(){for(vara=0,b=this,s&
this.DM,c=0;c<this,t;++c)a+=cbit(lhis[c]'b);returna}functionb
nTestBit(a){varb=Math,floor(a/this.DB);returnb>=this,t?0!=this.s
:0!=(this[b]&1?a%this.DB)}functionbnpChangeBit(a,b){varc=Bi
glnteger.ONE.shiftLeft(a);returnthis,bitwiseTolc,b,c)>c}functionbnSetBi
t(a){returnthis.changeBit(a,opor)}functionbnClearBit(a){returnthis,c
hangeBiI(a,op_andnot)}functionbnFlipBil(a){returnthis.changeBit(a,op_xo
r)}functionbnpAddTo(a,b){for(varc=0,d=0,e=Math,min(a.t,this,t)
;e>c;)d+=this[c]+a[c],b[c++]=d&this.DM,d?=this.DB;if(a.t<
this,t){for(d+=a.s;c<this,t;)d+=this[c],b[c++]=d&this.DM,d>>=
this.DB;d+=this.s|else{for(d+=this,s;c<a.t;)d+=a[c],b[c++]=
d&this.DM,d?=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b[c++]=d
:-1>d&&(b[c++]=this.DV+d),b.t=c,b.clamp()}functionbnAdd(a){v
arb=nbi();returnthis.addTo(a,b),b}functionbnSubtract(a){varb=nbi
();returnthis.subTo(a,b),b)functionbnMultiply(a){varb=nbi();return
this.multiplyTo(a,b).b}functionbnSquareO;vara=nbi();returnthis,sq
uareTo(a),a)functionbnDivide(a){varb=nbi();returnthis.divRemTo(a,b,
null),b}functionbnRemainder(a){varb=nbi();returnthis.divRemToCa,nu
11,b),b}functionbnDivideAndRemainder(a){varb=nbi0,c=nbi();return
this.divRemTo(a,b,c),newArray(b,c)}functionbnpDMultiply(a){this'thi
s.t]=this.am(0,a-1,this,0,0,this,t),++this.t,this,clamp()}function
bnpDAddOffset(a,b){if(0!=a){for(;this.t<=b;)this[this.t++]=0;f
or(this[b]+=a;this[b]>=this.DV;)this[b]-=this.DV,++b>=this,t&&(th
is[this.t++]=0),++this[b]))functionNullExpO(}functionnNop(a){retu
rna}functionnMulTo(a,b,c){a.multiplyTo(b,c)}functionnSqrTo(a,b){
a.squareTo(b)}functionbnPow(a){returnthis.exp(a,newNullExp)}function
bnpMu11ip1yLowerTo(a,b,c){vard=Math,min(this,t+a.t,b);for(c.s=0,
c.t=d;d>0;)c[-d]=0;vare;for(e=c.t-this,t;e>d;++d)c[d+th
is.t]=this.am(0,a[d],c,d,0,this,t);for(e=Math,min(a.t,b);e>d;+
+d)this.am(0,a[d],c:d,0,b-d);c.clampO}functionbnpMu11ip1yUpperTo
(a,b,c){-b;vard=c.t=this,t+a.t-b;for(c.s=0;一-d>=0;)c[d]
=0;for(d=Math.max(b-this,t,0);d<a.t;++d)c[this.t+d-b]=this.
am(b-d,a[d],c,0,0,this,t+d-b);c.clamp(),c.drShiftTo(l,c)}functi
onBarrett(a){this.r2=nbi(),this.q3=nbi(),Biginteger.ONE.dlShiftTo(2*
a.t,this.r2),this,mu=this.r2.divide(a),this.m=a}functionbarrettConver
t(a)(if(a.s<0a.t>2*this.m.t)returna.mod(this,m);if(a.compareTo
(this,m)<0)returna;varb=nbi();returna.copyTo(b),this,reduce(b),b}
functionbarrettRevert(a){returna}functionbarrettReduce(a){for(a.drShi
ftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.c1amp
()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLo
werTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset
(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subT
o(this.m,a)}functionbarrettSqrTo(a,b){a.squarcTo(b),this,reduce(b)}fu
notionbarrettMulTo(a,b,c){a.multiplyTo(b,c),this,reduce(c)}functionbn
ModPow(a,b){varc,d,e=a.bitLengthO,f=nbv(l);if(0>=e)returnf;c
=18>e?1:48>e?3:144>e?4:768>e?5:6,d=8>e?newCla
ssic(b):b.isEvenO?newBarrett(b):newMontgomery(b);varg=newArray,h
=3,i=c-1,j=(1?c)-1;if(g[l]=d.convert(this),c>1){vark=
nbi();for(d.sqrTo(g[l],k);j>=h;)g[h]=nbi(),d.mulTo(k,g[h-2],g
[h]),h+=2)var1,m,n=a.t-1,o=!0,p=nbi();for(e=nbits(a[n])
1;n>=0;){for(e>=i?1=a[n]?e-i&j:(1=(a[n]&(1?e1)
-1)?i-e,n>0&&(1=a[n-11?this.DB+e-i)),h=c;0=(1&
1);)1?=1,—h;if((e-=h)<0&&(e+=this.I)B,―n),o)g[l].copyTo(f),
o=!1;else{for(;h>1;)d.sqrTo(f,p),d.sqrTo(p,f),h-=2;h>0?d.
sqrTo(f,p):(m=f,f=p,p=m),d.mulTo(p,g[l],f)}for(;n>=0&&0=
(a[n]&1?e);)d.sqrTo(f,p),m=f,f=p,p=m,-e<0&&(e=this.D
B-1,-n)}returnd.revert(f))functionbnGCD(a){varb=this,s<0?thi
s.negate0:this.cloneO,c=a.s<0?a.negate():a.clone();if(b.compare?
o(c)<0){vard=b;b=c,c=d}vare=b.getLowestSetBit(),f=c.getLow
estSetBit();if(0>f)returnb;for(f>e&&(f=e),f>0&&(b.rShiftTo
(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&
b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compare?
o(c)>=0?(b.subTo(c:b),b.rShiftTod,b)):(c.subTo(b,c),c.rShiftTod,
c));returnf>0&&c.!ShiftTo(f,c),c}functionbnpModlnt(a){if(0>=a)
return0;varb=this.DV%a,c=this,s<0?a-1:0;if(this.t>0)if
(0==b)c=this[0%a;elsefor(vard=this.t-1;d>=0;―d)c=(b*c
+thisfd])%a;returnc}functionbnModInverse(a){varb=a.isEvenO;if
(this.isEvenO&&b0==a.signum())returnBiginteger.ZERO;for(varc=a.
cloneO,d=this.cloneO,e=nbv(l),f=nbv(0),g=nbv(0),h=nbv(l);0!
=c.signumO;){for(;c.isEvenO;)c.rShiftTod,c),b?(e.isEvenO&&f,i
sEven()|(e.addTo(this,e),f.subTo(a,f)),e.rShiftTo(l,e)):f.isEvenO||
f.subTo(a,f),f.rShiftTo(1,f);for(;d.isEvenO;)d.rShiftTo(l,d),b?
(g.isEvenO&&h.isEvenO(g.addTo(this,g),h.subTo(a,h)),g.rShiftTo(l,
g)):h.isEvenO|h.subTo(a,h),h.rShiftTo(l,h);c.compareTo(d)>=0?(c.s
ubTo(d,c),b&&e.subTo(g,e),f.subTo(h,f)):(d.subTo(c,d),b&&g.subTo
(e,g),h.subTo(f,h))}return0!=d.compareTo(Biginteger.ONE)?BigInteger.Z
ERO:h.compareTo(a)>=0?h.subtract(a):h.signumO<0?(h.addTo(a,h),h.
signumO<0?h.add(a):h):h)functionbnIsProbab1ePrime(a){varb,c=t
his.abs();if(1==c.t&&c]0]<=lowprimes[lowprimes.length-1]){for(b-
0;b<lowprimes.length;++b)if(c|0==lowprimes[b])return!0;return!1}
if(c.isEvenO)return!1;for(b=1;b<lowprimes.length;)[for(vard=lo
wprimes[b],e=b+1;e<lowprimes.length&&Iplim>d;)d*=lowprimes[e++];
for(d=c.modInt(d);e>b;)if(d%lowprimes[b++]==0)return!1}return
c.millerRabin(a)}functionbnpMillerRabin(a){varb=this,subtract(Biglnteg
er.ONE),c=b.getLowestSetBit();if(0>=c)return!1;vard=b.shiftRight
(c);a=a+1>>1,a>lowprimes.length&&(a=lowprimes.length);for(vare
=nbi(),f=0;a>f;++f){e.fromlnt(lowprimes[Math,floor(Math,random()*1
owprimes.length)]);varg=e.modPow(d,this);if(0!=g.compareTo(Biginteger.
ONE)&&0!=g.compareTo(b)){for(varh=1;h++<c&&0!=g.compareTo(b)
;)if(g=g.modPowIni(2,this),0==g.compareTo(Biginteger.ONE))return!1;
if(0!=g.compareTo(b))return!1}}return!0/functionArcfour(){this,i
=0,this,j=0,this.S=newArray}functionARC4init(a){varb,c,d;for
(b=0;256>b;++b)this.S[b]=b;for(c=0,b=0;256>b;++b)c=c+t
his.S[b]+a[b%a.length]&255,d=this.S[b],this.Sfbl=this.S[c],this.S
[c]=d;this,i=0,this.j=0}functionARC4next(){vara;returnthis.i=
this,i+1&255,this,j=this,j+this.Sfthis.i]&255,a=this.Sfthis.i],t
his.S[this.i]=this.S[this.j],this.S[this.j]=a,this.S[a+this.S[this.i]&
255]}functionprngnewstateO{returnnewArcfour}functionrnggetbyte()
{if(null==rngstate){for(rngstate=prng_newstate();rng_psize>rng_
pptr;):vara=Math.floor(65536*Math,random());rng_pool[rng_pptr++]=255
&a)for(rngstate.init(rngpool),rngpptr=0;rngpptr<rngpool.length;
++rng_pptr)rng_pool[rng_pptr]=0;rng_pplr=0}returnrng_state.next()}fu
notionrnggetbytes(a){varb;for(b=0;b<a.length;++b)a[b]=rngget
byte()}functionSecureRandomO{}functionparseBiglnt(a,b){returnnewBi
glnteger(a,b)}functionlinebrk(a,b){for(varc=d=0;d+b<a.len
gth;)c+=a.substring(d,d+b)+“n”,d+=b;returnc+a.substring(d,a.len
gth)}functionbyte2Hex(a){return16>a?"0"+a.toString(16):a.toString
(16)}functionpkcslpad2(a,b)(if(b<a.length+11)returnconsole,error(z,
MessagetoolongforRSA"),null;for(varc=newArray,d=a.length-1;d>
=0&&b>0;){vare=a.charCodeAt(d-);128>e?c[—b]=e:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧省2025秋九年級英語全冊Unit5Whataretheshirtsmadeof易錯(cuò)考點(diǎn)專練課件新版人教新目標(biāo)版
- 2025年氦氖激光血管內(nèi)照射治療儀項(xiàng)目合作計(jì)劃書
- 2025年食品級纖維素醚項(xiàng)目建議書
- 護(hù)士婦產(chǎn)科護(hù)理要點(diǎn)
- 小學(xué)護(hù)理媽媽:兒童意外傷害處理
- 腎絞痛護(hù)理效果評價(jià)
- 員工壓力管理
- 老年透析患者的透析健康教育
- 智慧護(hù)理與創(chuàng)新發(fā)展
- 護(hù)理創(chuàng)新管理對護(hù)患關(guān)系的影響
- 利用EXCEL畫風(fēng)機(jī)特性曲線-模版
- 基層銷售人員入職培訓(xùn)課程完整版課件
- 2023年郴州職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析word版
- 西南大學(xué)PPT 04 實(shí)用版答辯模板
- D500-D505 2016年合訂本防雷與接地圖集
- 顱腦損傷的重癥監(jiān)護(hù)
- 《史記》上冊注音版
- JJF 1985-2022直流電焊機(jī)焊接電源校準(zhǔn)規(guī)范
- GB/T 19867.2-2008氣焊焊接工藝規(guī)程
- 國家開放大學(xué)《刑法學(xué)(1)》形成性考核作業(yè)1-4參考答案
- 商戶類型POS機(jī)代碼
評論
0/150
提交評論