|
20精币
- $.RSA=function(){
- function h(z,t){
- return new au(z,t)
- }
- function aj(aC,aD){
- var t="";
- var z=0;
- while(z+aD<aC.length){
- t+=aC.substring(z,z+aD)+"\n";
- z+=aD
- }
- return t+aC.substring(z,aC.length)
- }
- function u(t){
- if(t<16){
- return"0"+t.toString(16)
- }
- else{
- return t.toString(16)
- }
-
- }
- function ah(aD,aG){
- if(aG<aD.length+11){
- uv_alert("Message too long for RSA");
- return null
- }
- var aF=new Array();
- var aC=aD.length-1;
- while(aC>=0&&aG>0){
- var aE=aD.charCodeAt(aC--);
- aF[--aG]=aE
- }
- aF[--aG]=0;
- var z=new af();
- var t=new Array();
- while(aG>2){
- t[0]=0;
- while(t[0]==0){
- z.nextBytes(t)
- }
- aF[--aG]=t[0]
- }
- aF[--aG]=2;
- aF[--aG]=0;
- return new au(aF)
- }
- function N(){
- this.n=null;
- this.e=0;
- this.d=null;
- this.p=null;
- this.q=null;
- this.dmp1=null;
- this.dmq1=null;
- this.coeff=null
- }
- function q(z,t){
- if(z!=null&&t!=null&&z.length>0&&t.length>0){
- this.n=h(z,16);
- this.e=parseInt(t,16)
- }
- else{
- uv_alert("Invalid RSA public key")
- }
-
- }
- function Y(t){
- return t.modPowInt(this.e,this.n)
- }
- function r(aC){
- var t=ah(aC,(this.n.bitLength()+7)>>3);
- if(t==null){
- return null
- }
- var aD=this.doPublic(t);
- if(aD==null){
- return null
- }
- var z=aD.toString(16);
- if((z.length&1)==0){
- return z
- }
- else{
- return"0"+z
- }
-
- }
- N.prototype.doPublic=Y;
- N.prototype.setPublic=q;
- N.prototype.encrypt=r;
- var ay;
- var ak=244837814094590;
- var ab=((ak&16777215)==15715070);
- function au(z,t,aC){
- if(z!=null){
- if("number"==typeof z){
- this.fromNumber(z,t,aC)
- }
- else{
- if(t==null&&"string"!=typeof z){
- this.fromString(z,256)
- }
- else{
- this.fromString(z,t)
- }
-
- }
-
- }
-
- }
- function j(){
- return new au(null)
- }
- function b(aE,t,z,aD,aG,aF){
- while(--aF>=0){
- var aC=t*this[aE++]+z[aD]+aG;
- aG=Math.floor(aC/67108864);
- z[aD++]=aC&67108863
- }
- return aG
- }
- function aA(aE,aJ,aK,aD,aH,t){
- var aG=aJ&32767,aI=aJ>>15;
- while(--t>=0){
- var aC=this[aE]&32767;
- var aF=this[aE++]>>15;
- var z=aI*aC+aF*aG;
- aC=aG*aC+((z&32767)<<15)+aK[aD]+(aH&1073741823);
- aH=(aC>>>30)+(z>>>15)+aI*aF+(aH>>>30);
- aK[aD++]=aC&1073741823
- }
- return aH
- }
- function az(aE,aJ,aK,aD,aH,t){
- var aG=aJ&16383,aI=aJ>>14;
- while(--t>=0){
- var aC=this[aE]&16383;
- var aF=this[aE++]>>14;
- var z=aI*aC+aF*aG;
- aC=aG*aC+((z&16383)<<14)+aK[aD]+aH;
- aH=(aC>>28)+(z>>14)+aI*aF;
- aK[aD++]=aC&268435455
- }
- return aH
- }
- if(ab&&(navigator.appName=="Microsoft Internet Explorer")){
- au.prototype.am=aA;
- ay=30
- }
- else{
- if(ab&&(navigator.appName!="Netscape")){
- au.prototype.am=b;
- ay=26
- }
- else{
- au.prototype.am=az;
- ay=28
- }
-
- }
- au.prototype.DB=ay;
- au.prototype.DM=((1<<ay)-1);
- au.prototype.DV=(1<<ay);
- var ac=52;
- au.prototype.FV=Math.pow(2,ac);
- au.prototype.F1=ac-ay;
- au.prototype.F2=2*ay-ac;
- var ag="0123456789abcdefghijklmnopqrstuvwxyz";
- var ai=new Array();
- var ar,x;
- ar="0".charCodeAt(0);
- for(x=0;
- x<=9;
- ++x){
- ai[ar++]=x
- }
- ar="a".charCodeAt(0);
- for(x=10;
- x<36;
- ++x){
- ai[ar++]=x
- }
- ar="A".charCodeAt(0);
- for(x=10;
- x<36;
- ++x){
- ai[ar++]=x
- }
- function aB(t){
- return ag.charAt(t)
- }
- function C(z,t){
- var aC=ai[z.charCodeAt(t)];
- return(aC==null)?-1:aC
- }
- function aa(z){
- for(var t=this.t-1;
- t>=0;
- --t){
- z[t]=this[t]
- }
- z.t=this.t;
- z.s=this.s
- }
- function p(t){
- this.t=1;
- this.s=(t<0)?-1:0;
- if(t>0){
- this[0]=t
- }
- else{
- if(t<-1){
- this[0]=t+DV
- }
- else{
- this.t=0
- }
-
- }
-
- }
- function c(t){
- var z=j();
- z.fromInt(t);
- return z
- }
- function y(aG,z){
- var aD;
- if(z==16){
- aD=4
- }
- else{
- if(z==8){
- aD=3
- }
- else{
- if(z==256){
- aD=8
- }
- else{
- if(z==2){
- aD=1
- }
- else{
- if(z==32){
- aD=5
- }
- else{
- if(z==4){
- aD=2
- }
- else{
- this.fromRadix(aG,z);
- return
- }
-
- }
-
- }
-
- }
-
- }
-
- }
- this.t=0;
- this.s=0;
- var aF=aG.length,aC=false,aE=0;
- while(--aF>=0){
- var t=(aD==8)?aG[aF]&255:C(aG,aF);
- if(t<0){
- if(aG.charAt(aF)=="-"){
- aC=true
- }
- continue
- }
- aC=false;
- if(aE==0){
- this[this.t++]=t
- }
- else{
- if(aE+aD>this.DB){
- this[this.t-1]|=(t&((1<<(this.DB-aE))-1))<<aE;
- this[this.t++]=(t>>(this.DB-aE))
- }
- else{
- this[this.t-1]|=t<<aE
- }
-
- }
- aE+=aD;
- if(aE>=this.DB){
- aE-=this.DB
- }
-
- }
- if(aD==8&&(aG[0]&128)!=0){
- this.s=-1;
- if(aE>0){
- this[this.t-1]|=((1<<(this.DB-aE))-1)<<aE
- }
-
- }
- this.clamp();
- if(aC){
- au.ZERO.subTo(this,this)
- }
-
- }
- function Q(){
- var t=this.s&this.DM;
- while(this.t>0&&this[this.t-1]==t){
- --this.t
- }
-
- }
- function s(z){
- if(this.s<0){
- return"-"+this.negate().toString(z)
- }
- var aC;
- if(z==16){
- aC=4
- }
- else{
- if(z==8){
- aC=3
- }
- else{
- if(z==2){
- aC=1
- }
- else{
- if(z==32){
- aC=5
- }
- else{
- if(z==4){
- aC=2
- }
- else{
- return this.toRadix(z)
- }
-
- }
-
- }
-
- }
-
- }
- var aE=(1<<aC)-1,aH,t=false,aF="",aD=this.t;
- var aG=this.DB-(aD*this.DB)%aC;
- if(aD-->0){
- if(aG<this.DB&&(aH=this[aD]>>aG)>0){
- t=true;
- aF=aB(aH)
- }
- while(aD>=0){
- if(aG<aC){
- aH=(this[aD]&((1<<aG)-1))<<(aC-aG);
- aH|=this[--aD]>>(aG+=this.DB-aC)
- }
- else{
- aH=(this[aD]>>(aG-=aC))&aE;
- if(aG<=0){
- aG+=this.DB;
- --aD
- }
-
- }
- if(aH>0){
- t=true
- }
- if(t){
- aF+=aB(aH)
- }
-
- }
-
- }
- return t?aF:"0"
- }
- function T(){
- var t=j();
- au.ZERO.subTo(this,t);
- return t
- }
- function an(){
- return(this.s<0)?this.negate():this
- }
- function I(t){
- var aC=this.s-t.s;
- if(aC!=0){
- return aC
- }
- var z=this.t;
- aC=z-t.t;
- if(aC!=0){
- return aC
- }
- while(--z>=0){
- if((aC=this[z]-t[z])!=0){
- return aC
- }
-
- }
- return 0
- }
- function l(z){
- var aD=1,aC;
- if((aC=z>>>16)!=0){
- z=aC;
- aD+=16
- }
- if((aC=z>>8)!=0){
- z=aC;
- aD+=8
- }
- if((aC=z>>4)!=0){
- z=aC;
- aD+=4
- }
- if((aC=z>>2)!=0){
- z=aC;
- aD+=2
- }
- if((aC=z>>1)!=0){
- z=aC;
- aD+=1
- }
- return aD
- }
- function w(){
- if(this.t<=0){
- return 0
- }
- return this.DB*(this.t-1)+l(this[this.t-1]^(this.s&this.DM))
- }
- function at(aC,z){
- var t;
- for(t=this.t-1;
- t>=0;
- --t){
- z[t+aC]=this[t]
- }
- for(t=aC-1;
- t>=0;
- --t){
- z[t]=0
- }
- z.t=this.t+aC;
- z.s=this.s
- }
- function Z(aC,z){
- for(var t=aC;
- t<this.t;
- ++t){
- z[t-aC]=this[t]
- }
- z.t=Math.max(this.t-aC,0);
- z.s=this.s
- }
- function v(aH,aD){
- var z=aH%this.DB;
- var t=this.DB-z;
- var aF=(1<<t)-1;
- var aE=Math.floor(aH/this.DB),aG=(this.s<<z)&this.DM,aC;
- for(aC=this.t-1;
- aC>=0;
- --aC){
- aD[aC+aE+1]=(this[aC]>>t)|aG;
- aG=(this[aC]&aF)<<z
- }
- for(aC=aE-1;
- aC>=0;
- --aC){
- aD[aC]=0
- }
- aD[aE]=aG;
- aD.t=this.t+aE+1;
- aD.s=this.s;
- aD.clamp()
- }
- function n(aG,aD){
- aD.s=this.s;
- var aE=Math.floor(aG/this.DB);
- if(aE>=this.t){
- aD.t=0;
- return
- }
- var z=aG%this.DB;
- var t=this.DB-z;
- var aF=(1<<z)-1;
- aD[0]=this[aE]>>z;
- for(var aC=aE+1;
- aC<this.t;
- ++aC){
- aD[aC-aE-1]|=(this[aC]&aF)<<t;
- aD[aC-aE]=this[aC]>>z
- }
- if(z>0){
- aD[this.t-aE-1]|=(this.s&aF)<<t
- }
- aD.t=this.t-aE;
- aD.clamp()
- }
- function ad(z,aD){
- var aC=0,aE=0,t=Math.min(z.t,this.t);
- while(aC<t){
- aE+=this[aC]-z[aC];
- aD[aC++]=aE&this.DM;
- aE>>=this.DB
- }
- if(z.t<this.t){
- aE-=z.s;
- while(aC<this.t){
- aE+=this[aC];
- aD[aC++]=aE&this.DM;
- aE>>=this.DB
- }
- aE+=this.s
- }
- else{
- aE+=this.s;
- while(aC<z.t){
- aE-=z[aC];
- aD[aC++]=aE&this.DM;
- aE>>=this.DB
- }
- aE-=z.s
- }
- aD.s=(aE<0)?-1:0;
- if(aE<-1){
- aD[aC++]=this.DV+aE
- }
- else{
- if(aE>0){
- aD[aC++]=aE
- }
-
- }
- aD.t=aC;
- aD.clamp()
- }
- function F(z,aD){
- var t=this.abs(),aE=z.abs();
- var aC=t.t;
- aD.t=aC+aE.t;
- while(--aC>=0){
- aD[aC]=0
- }
- for(aC=0;
- aC<aE.t;
- ++aC){
- aD[aC+t.t]=t.am(0,aE[aC],aD,aC,0,t.t)
- }
- aD.s=0;
- aD.clamp();
- if(this.s!=z.s){
- au.ZERO.subTo(aD,aD)
- }
-
- }
- function S(aC){
- var t=this.abs();
- var z=aC.t=2*t.t;
- while(--z>=0){
- aC[z]=0
- }
- for(z=0;
- z<t.t-1;
- ++z){
- var aD=t.am(z,t[z],aC,2*z,0,1);
- if((aC[z+t.t]+=t.am(z+1,2*t[z],aC,2*z+1,aD,t.t-z-1))>=t.DV){
- aC[z+t.t]-=t.DV;
- aC[z+t.t+1]=1
- }
-
- }
- if(aC.t>0){
- aC[aC.t-1]+=t.am(z,t[z],aC,2*z,0,1)
- }
- aC.s=0;
- aC.clamp()
- }
- function G(aK,aH,aG){
- var aQ=aK.abs();
- if(aQ.t<=0){
- return
- }
- var aI=this.abs();
- if(aI.t<aQ.t){
- if(aH!=null){
- aH.fromInt(0)
- }
- if(aG!=null){
- this.copyTo(aG)
- }
- return
- }
- if(aG==null){
- aG=j()
- }
- var aE=j(),z=this.s,aJ=aK.s;
- var aP=this.DB-l(aQ[aQ.t-1]);
- if(aP>0){
- aQ.lShiftTo(aP,aE);
- aI.lShiftTo(aP,aG)
- }
- else{
- aQ.copyTo(aE);
- aI.copyTo(aG)
- }
- var aM=aE.t;
- var aC=aE[aM-1];
- if(aC==0){
- return
- }
- var aL=aC*(1<<this.F1)+((aM>1)?aE[aM-2]>>this.F2:0);
- var aT=this.FV/aL,aS=(1<<this.F1)/aL,aR=1<<this.F2;
- var aO=aG.t,aN=aO-aM,aF=(aH==null)?j():aH;
- aE.dlShiftTo(aN,aF);
- if(aG.compareTo(aF)>=0){
- aG[aG.t++]=1;
- aG.subTo(aF,aG)
- }
- au.ONE.dlShiftTo(aM,aF);
- aF.subTo(aE,aE);
- while(aE.t<aM){
- aE[aE.t++]=0
- }
- while(--aN>=0){
- var aD=(aG[--aO]==aC)?this.DM:Math.floor(aG[aO]*aT+(aG[aO-1]+aR)*aS);
- if((aG[aO]+=aE.am(0,aD,aG,aN,0,aM))<aD){
- aE.dlShiftTo(aN,aF);
- aG.subTo(aF,aG);
- while(aG[aO]<--aD){
- aG.subTo(aF,aG)
- }
-
- }
-
- }
- if(aH!=null){
- aG.drShiftTo(aM,aH);
- if(z!=aJ){
- au.ZERO.subTo(aH,aH)
- }
-
- }
- aG.t=aM;
- aG.clamp();
- if(aP>0){
- aG.rShiftTo(aP,aG)
- }
- if(z<0){
- au.ZERO.subTo(aG,aG)
- }
-
- }
- function P(t){
- var z=j();
- this.abs().divRemTo(t,null,z);
- if(this.s<0&&z.compareTo(au.ZERO)>0){
- t.subTo(z,z)
- }
- return z
- }
- function M(t){
- this.m=t
- }
- function X(t){
- if(t.s<0||t.compareTo(this.m)>=0){
- return t.mod(this.m)
- }
- else{
- return t
- }
-
- }
- function am(t){
- return t
- }
- function L(t){
- t.divRemTo(this.m,null,t)
- }
- function J(t,aC,z){
- t.multiplyTo(aC,z);
- this.reduce(z)
- }
- function aw(t,z){
- t.squareTo(z);
- this.reduce(z)
- }
- M.prototype.convert=X;
- M.prototype.revert=am;
- M.prototype.reduce=L;
- M.prototype.mulTo=J;
- M.prototype.sqrTo=aw;
- function D(){
- if(this.t<1){
- return 0
- }
- var t=this[0];
- if((t&1)==0){
- return 0
- }
- var z=t&3;
- z=(z*(2-(t&15)*z))&15;
- z=(z*(2-(t&255)*z))&255;
- z=(z*(2-(((t&65535)*z)&65535)))&65535;
- z=(z*(2-t*z%this.DV))%this.DV;
- return(z>0)?this.DV-z:-z
- }
- function g(t){
- this.m=t;
- this.mp=t.invDigit();
- this.mpl=this.mp&32767;
- this.mph=this.mp>>15;
- this.um=(1<<(t.DB-15))-1;
- this.mt2=2*t.t
- }
- function al(t){
- var z=j();
- t.abs().dlShiftTo(this.m.t,z);
- z.divRemTo(this.m,null,z);
- if(t.s<0&&z.compareTo(au.ZERO)>0){
- this.m.subTo(z,z)
- }
- return z
- }
- function av(t){
- var z=j();
- t.copyTo(z);
- this.reduce(z);
- return z
- }
- function R(t){
- while(t.t<=this.mt2){
- t[t.t++]=0
- }
- for(var aC=0;
- aC<this.m.t;
- ++aC){
- var z=t[aC]&32767;
- var aD=(z*this.mpl+(((z*this.mph+(t[aC]>>15)*this.mpl)&this.um)<<15))&t.DM;
- z=aC+this.m.t;
- t[z]+=this.m.am(0,aD,t,aC,0,this.m.t);
- while(t[z]>=t.DV){
- t[z]-=t.DV;
- t[++z]++
- }
-
- }
- t.clamp();
- t.drShiftTo(this.m.t,t);
- if(t.compareTo(this.m)>=0){
- t.subTo(this.m,t)
- }
-
- }
- function ao(t,z){
- t.squareTo(z);
- this.reduce(z)
- }
- function B(t,aC,z){
- t.multiplyTo(aC,z);
- this.reduce(z)
- }
- g.prototype.convert=al;
- g.prototype.revert=av;
- g.prototype.reduce=R;
- g.prototype.mulTo=B;
- g.prototype.sqrTo=ao;
- function k(){
- return((this.t>0)?(this[0]&1):this.s)==0
- }
- function A(aH,aI){
- if(aH>4294967295||aH<1){
- return au.ONE
- }
- var aG=j(),aC=j(),aF=aI.convert(this),aE=l(aH)-1;
- aF.copyTo(aG);
- while(--aE>=0){
- aI.sqrTo(aG,aC);
- if((aH&(1<<aE))>0){
- aI.mulTo(aC,aF,aG)
- }
- else{
- var aD=aG;
- aG=aC;
- aC=aD
- }
-
- }
- return aI.revert(aG)
- }
- function ap(aC,t){
- var aD;
- if(aC<256||t.isEven()){
- aD=new M(t)
- }
- else{
- aD=new g(t)
- }
- return this.exp(aC,aD)
- }
- au.prototype.copyTo=aa;
- au.prototype.fromInt=p;
- au.prototype.fromString=y;
- au.prototype.clamp=Q;
- au.prototype.dlShiftTo=at;
- au.prototype.drShiftTo=Z;
- au.prototype.lShiftTo=v;
- au.prototype.rShiftTo=n;
- au.prototype.subTo=ad;
- au.prototype.multiplyTo=F;
- au.prototype.squareTo=S;
- au.prototype.divRemTo=G;
- au.prototype.invDigit=D;
- au.prototype.isEven=k;
- au.prototype.exp=A;
- au.prototype.toString=s;
- au.prototype.negate=T;
- au.prototype.abs=an;
- au.prototype.compareTo=I;
- au.prototype.bitLength=w;
- au.prototype.mod=P;
- au.prototype.modPowInt=ap;
- au.ZERO=c(0);
- au.ONE=c(1);
- var o;
- var W;
- var ae;
- function d(t){
- W[ae++]^=t&255;
- W[ae++]^=(t>>8)&255;
- W[ae++]^=(t>>16)&255;
- W[ae++]^=(t>>24)&255;
- if(ae>=O){
- ae-=O
- }
-
- }
- function V(){
- d(new Date().getTime())
- }
- if(W==null){
- W=new Array();
- ae=0;
- var K;
- if(navigator.appName=="Netscape"&&navigator.appVersion<"5"&&window.crypto&&window.crypto.random){
- var H=window.crypto.random(32);
- for(K=0;
- K<H.length;
- ++K){
- W[ae++]=H.charCodeAt(K)&255
- }
-
- }
- while(ae<O){
- K=Math.floor(65536*Math.random());
- W[ae++]=K>>>8;
- W[ae++]=K&255
- }
- ae=0;
- V()
- }
- function E(){
- if(o==null){
- V();
- o=aq();
- o.init(W);
- for(ae=0;
- ae<W.length;
- ++ae){
- W[ae]=0
- }
- ae=0
- }
- return o.next()
- }
- function ax(z){
- var t;
- for(t=0;
- t<z.length;
- ++t){
- z[t]=E()
- }
-
- }
- function af(){}af.prototype.nextBytes=ax;
- function m(){
- this.i=0;
- this.j=0;
- this.S=new Array()
- }
- function f(aE){
- var aD,z,aC;
- for(aD=0;
- aD<256;
- ++aD){
- this.S[aD]=aD
- }
- z=0;
- for(aD=0;
- aD<256;
- ++aD){
- z=(z+this.S[aD]+aE[aD%aE.length])&255;
- aC=this.S[aD];
- this.S[aD]=this.S[z];
- this.S[z]=aC
- }
- this.i=0;
- this.j=0
- }
- function a(){
- var z;
- this.i=(this.i+1)&255;
- this.j=(this.j+this.S[this.i])&255;
- z=this.S[this.i];
- this.S[this.i]=this.S[this.j];
- this.S[this.j]=z;
- return this.S[(z+this.S[this.i])&255]
- }
- m.prototype.init=f;
- m.prototype.next=a;
- function aq(){
- return new m()
- }
- var O=256;
- function U(aD,aC,z){
- aC="F20CE00BAE5361F8FA3AE9CEFA495362FF7DA1BA628F64A347F0A8C012BF0B254A30CD92ABFFE7A6EE0DC424CB6166F8819EFA5BCCB20EDFB4AD02E412CCF579B1CA711D55B8B0B3AEB60153D5E0693A2A86F3167D7847A0CB8B00004716A9095D9BADC977CBB804DBDCBA6029A9710869A453F27DFDDF83C016D928B3CBF4C7";
- z="3";
- var t=new N();
- t.setPublic(aC,z);
- return t.encrypt(aD)
- }
- return{
- rsa_encrypt:U
- }
-
- }
- ();
复制代码 发条工具 怎么添加这个对象 调用呢 |
求助知识:请将问题描述清楚,最好把你有问题的源码打包上传上来,这样更方便大家帮助你。 友情提醒:本版被采纳的主题可在 申请荣誉值 帖子申请荣誉值,获得 3点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
|