jsencrypt參數(shù)前端加密c#解密_第1頁
jsencrypt參數(shù)前端加密c#解密_第2頁
jsencrypt參數(shù)前端加密c#解密_第3頁
jsencrypt參數(shù)前端加密c#解密_第4頁
jsencrypt參數(shù)前端加密c#解密_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論