开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1840|回复: 5
收起左侧

[已解决] 求这个RSA加密算法

 关闭 [复制链接]
结帖率:84% (16/19)
发表于 2013-9-13 02:37:22 | 显示全部楼层 |阅读模式   河北省邯郸市
50精币
                        if(isValid) {
                                    //密码加密
                                    var PublicKey = 'BDAD3EB2F9681EAF6FBE41A073531AE4619DB772AB44451C2D46140F746B3B20271D46DAF6F00D699582E9D41BADE4A14C80AEE4A5DEA85B0255369E9E107B6B4F74A18CCDB4EFD490773C3B752C5555F463CB378B89F42AF51D8AE48F9CE607ACC47229CCC62C4F7606DED2B087CBAF0A1626B01EF08D3C2B05092C71BB6C75';
                                    var pwd = $("#v_password").val();
                                    var RSA = new RSAKey();
                                    RSA.setPublic(PublicKey, "10001");
                                    var Res = RSA.encrypt(pwd);
                                    $("#loginPwd").val(Res);
                                   
                                    PublicKey = 'BB955F6C6185B341C1A42EBF1FF9971B273878DBDAB252A0F1C305EBB529E116D807E0108BE6EDD47FF8DC5B6720FFE7F413CBB4ACDFB4C6BE609A5D60F5ADB261690A77755E058D4D9C0EC4FC2F5EB623DEBC88896003FBD8AFC4C3990828C66062A6D6CE509A2B0F8E06C4E332673FB86D235164B62B6110C1F1E0625B20ED';
                                    pwd = $("#v_password").val();
                                    RSA = new RSAKey();
                                    RSA.setPublic(PublicKey, "10001");
                                    Res = RSA.encrypt(pwd);
                                    $("#loginPwdBank").val(Res);
                                    //提交表单
                                    $("#register_form").attr("method", "post");
                                    $("#register_form").attr("action", "./uiRegister.view");
                                    $("#register_form").submit();
                                    }


unionrsa.js 的内容

var dbits;
var canary = 0xdeadbeefcafe;
var j_lm = ((canary&0xffffff)==0xefcafe);
function BigInteger(a,b,c) {
      if(a != null)
        if("number" == typeof a) this.fromNumber(a,b,c);
        else if(b == null && "string" != typeof a) this.fromString(a,256);
        else this.fromString(a,b);
    }
function nbi() {
    return new BigInteger(null);
}
function am1(i,x,w,j,c,n) {
      while(--n >= 0) {
            var v = x*this[i++]+w[j]+c;
            c = Math.floor(v/0x4000000);
            w[j++] = v&0x3ffffff;
              }
      return c;
    }
function am2(i,x,w,j,c,n) {
      var xl = x&0x7fff, xh = x>>15;
      while(--n >= 0) {
            var l = this[i]&0x7fff;
            var h = this[i++]>>15;
            var m = xh*l+h*xl;
            l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);
            c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
            w[j++] = l&0x3fffffff;
              }
      return c;
    }
function am3(i,x,w,j,c,n) {
      var xl = x&0x3fff, xh = x>>14;
      while(--n >= 0) {
            var l = this[i]&0x3fff;
            var h = this[i++]>>14;
            var m = xh*l+h*xl;
            l = xl*l+((m&0x3fff)<<14)+w[j]+c;
            c = (l>>28)+(m>>14)+xh*h;
            w[j++] = l&0xfffffff;
              }
      return c;
    }
if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
      BigInteger.prototype.am = am2;
      dbits = 30;
    }
else if(j_lm && (navigator.appName != "Netscape")) {
      BigInteger.prototype.am = am1;
      dbits = 26;
    }
else {
      BigInteger.prototype.am = am3;
      dbits = 28;
    }
BigInteger.prototype.DB = dbits;
BigInteger.prototype.DM = ((1<<dbits)-1);
BigInteger.prototype.DV = (1<<dbits);
var BI_FP = 52;
BigInteger.prototype.FV = Math.pow(2,BI_FP);
BigInteger.prototype.F1 = BI_FP-dbits;
BigInteger.prototype.F2 = 2*dbits-BI_FP;
var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
var BI_RC = new Array();
var rr,vv;
rr = "0".charCodeAt(0);
for(vv = 0;
vv <= 9;
++vv) BI_RC[rr++] = vv;
rr = "a".charCodeAt(0);
for(vv = 10;
vv < 36;
++vv) BI_RC[rr++] = vv;
rr = "A".charCodeAt(0);
for(vv = 10;
vv < 36;
++vv) BI_RC[rr++] = vv;
function int2char(n) {
    return BI_RM.charAt(n);
}
function intAt(s,i) {
      var c = BI_RC[s.charCodeAt(i)];
      return (c==null)?-1:c;
    }
function bnpCopyTo(r) {
      for(var i = this.t-1;
    i >= 0;
    --i) r[i] = this[i];
      r.t = this.t;
      r.s = this.s;
    }
function bnpFromInt(x) {
      this.t = 1;
      this.s = (x<0)?-1:0;
      if(x > 0) this[0] = x;
      else if(x < -1) this[0] = x+DV;
      else this.t = 0;
    }
function nbv(i) {
    var r = nbi();
    r.fromInt(i);
    return r;
}
function bnpFromString(s,b) {
      var k;
      if(b == 16) k = 4;
      else if(b == 8) k = 3;
      else if(b == 256) k = 8;
      else if(b == 2) k = 1;
      else if(b == 32) k = 5;
      else if(b == 4) k = 2;
      else {
        this.fromRadix(s,b);
        return;
    }
      this.t = 0;
      this.s = 0;
      var i = s.length, mi = false, sh = 0;
      while(--i >= 0) {
            var x = (k==8)?s[i]&0xff:intAt(s,i);
            if(x < 0) {
                  if(s.charAt(i) == "-") mi = true;
                  continue;
                        }
            mi = false;
            if(sh == 0)
              this[this.t++] = x;
            else if(sh+k > this.DB) {
                  this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
                  this[this.t++] = (x>>(this.DB-sh));
                        }
            else
              this[this.t-1] |= x<<sh;
            sh += k;
            if(sh >= this.DB) sh -= this.DB;
              }
      if(k == 8 && (s[0]&0x80) != 0) {
            this.s = -1;
            if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
              }
      this.clamp();
      if(mi) BigInteger.ZERO.subTo(this,this);
    }
function bnpClamp() {
      var c = this.s&this.DM;
      while(this.t > 0 && this[this.t-1] == c) --this.t;
    }
function bnToString(b) {
      if(this.s < 0) return "-"+this.negate().toString(b);
      var k;
      if(b == 16) k = 4;
      else if(b == 8) k = 3;
      else if(b == 2) k = 1;
      else if(b == 32) k = 5;
      else if(b == 4) k = 2;
      else return this.toRadix(b);
      var km = (1<<k)-1, d, m = false, r = "", i = this.t;
      var p = this.DB-(i*this.DB)%k;
      if(i-- > 0) {
            if(p < this.DB && (d = this[i]>>p) > 0) {
            m = true;
            r = int2char(d);
        }
            while(i >= 0) {
                  if(p < k) {
                        d = (this[i]&((1<<p)-1))<<(k-p);
                        d |= this[--i]>>(p+=this.DB-k);
                                  }
                  else {
                        d = (this[i]>>(p-=k))&km;
                        if(p <= 0) {
                    p += this.DB;
                    --i;
                }
                                  }
                  if(d > 0) m = true;
                  if(m) r += int2char(d);
                        }
              }
      return m?r:"0";
    }
function bnNegate() {
    var r = nbi();
    BigInteger.ZERO.subTo(this,r);
    return r;
}
function bnAbs() {
    return (this.s<0)?this.negate():this;
}
function bnCompareTo(a) {
      var r = this.s-a.s;
      if(r != 0) return r;
      var i = this.t;
      r = i-a.t;
      if(r != 0) return r;
      while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
      return 0;
    }
function nbits(x) {
      var r = 1, t;
      if((t=x>>>16) != 0) {
        x = t;
        r += 16;
    }
      if((t=x>>8) != 0) {
        x = t;
        r += 8;
    }
      if((t=x>>4) != 0) {
        x = t;
        r += 4;
    }
      if((t=x>>2) != 0) {
        x = t;
        r += 2;
    }
      if((t=x>>1) != 0) {
        x = t;
        r += 1;
    }
      return r;
    }
function bnBitLength() {
      if(this.t <= 0) return 0;
      return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
    }
function bnpDLShiftTo(n,r) {
      var i;
      for(i = this.t-1;
    i >= 0;
    --i) r[i+n] = this[i];
      for(i = n-1;
    i >= 0;
    --i) r[i] = 0;
      r.t = this.t+n;
      r.s = this.s;
    }
function bnpDRShiftTo(n,r) {
      for(var i = n;
    i < this.t;
    ++i) r[i-n] = this[i];
      r.t = Math.max(this.t-n,0);
      r.s = this.s;
    }
function bnpLShiftTo(n,r) {
      var bs = n%this.DB;
      var cbs = this.DB-bs;
      var bm = (1<<cbs)-1;
      var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
      for(i = this.t-1;
    i >= 0;
    --i) {
            r[i+ds+1] = (this[i]>>cbs)|c;
            c = (this[i]&bm)<<bs;
              }
      for(i = ds-1;
    i >= 0;
    --i) r[i] = 0;
      r[ds] = c;
      r.t = this.t+ds+1;
      r.s = this.s;
      r.clamp();
    }
function bnpRShiftTo(n,r) {
      r.s = this.s;
      var ds = Math.floor(n/this.DB);
      if(ds >= this.t) {
        r.t = 0;
        return;
    }
      var bs = n%this.DB;
      var cbs = this.DB-bs;
      var bm = (1<<bs)-1;
      r[0] = this[ds]>>bs;
      for(var i = ds+1;
    i < this.t;
    ++i) {
            r[i-ds-1] |= (this[i]&bm)<<cbs;
            r[i-ds] = this[i]>>bs;
              }
      if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
      r.t = this.t-ds;
      r.clamp();
    }
function bnpSubTo(a,r) {
      var i = 0, c = 0, m = Math.min(a.t,this.t);
      while(i < m) {
            c += this[i]-a[i];
            r[i++] = c&this.DM;
            c >>= this.DB;
              }
      if(a.t < this.t) {
            c -= a.s;
            while(i < this.t) {
                  c += this[i];
                  r[i++] = c&this.DM;
                  c >>= this.DB;
                        }
            c += this.s;
              }
      else {
            c += this.s;
            while(i < a.t) {
                  c -= a[i];
                  r[i++] = c&this.DM;
                  c >>= this.DB;
                        }
            c -= a.s;
              }
      r.s = (c<0)?-1:0;
      if(c < -1) r[i++] = this.DV+c;
      else if(c > 0) r[i++] = c;
      r.t = i;
      r.clamp();
    }
function bnpMultiplyTo(a,r) {
      var x = this.abs(), y = a.abs();
      var i = x.t;
      r.t = i+y.t;
      while(--i >= 0) r[i] = 0;
      for(i = 0;
    i < y.t;
    ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);
      r.s = 0;
      r.clamp();
      if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
    }
function bnpSquareTo(r) {
      var x = this.abs();
      var i = r.t = 2*x.t;
      while(--i >= 0) r[i] = 0;
      for(i = 0;
    i < x.t-1;
    ++i) {
            var c = x.am(i,x[i],r,2*i,0,1);
            if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {
                  r[i+x.t] -= x.DV;
                  r[i+x.t+1] = 1;
                        }
              }
      if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);
      r.s = 0;
      r.clamp();
    }
function bnpDivRemTo(m,q,r) {
      var pm = m.abs();
      if(pm.t <= 0) return;
      var pt = this.abs();
      if(pt.t < pm.t) {
            if(q != null) q.fromInt(0);
            if(r != null) this.copyTo(r);
            return;
              }
      if(r == null) r = nbi();
      var y = nbi(), ts = this.s, ms = m.s;
      var nsh = this.DB-nbits(pm[pm.t-1]);       
      if(nsh > 0) {
        pm.lShiftTo(nsh,y);
        pt.lShiftTo(nsh,r);
    }
      else {
        pm.copyTo(y);
        pt.copyTo(r);
    }
      var ys = y.t;
      var y0 = y[ys-1];
      if(y0 == 0) return;
      var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);
      var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;
      var i = r.t, j = i-ys, t = (q==null)?nbi():q;
      y.dlShiftTo(j,t);
      if(r.compareTo(t) >= 0) {
            r[r.t++] = 1;
            r.subTo(t,r);
              }
      BigInteger.ONE.dlShiftTo(ys,t);
      t.subTo(y,y);       
      while(y.t < ys) y[y.t++] = 0;
      while(--j >= 0) {

            var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);
            if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {       
                  y.dlShiftTo(j,t);
                  r.subTo(t,r);
                  while(r[i] < --qd) r.subTo(t,r);
                        }
              }
      if(q != null) {
            r.drShiftTo(ys,q);
            if(ts != ms) BigInteger.ZERO.subTo(q,q);
              }
      r.t = ys;
      r.clamp();
      if(nsh > 0) r.rShiftTo(nsh,r);       
      if(ts < 0) BigInteger.ZERO.subTo(r,r);
    }
function bnMod(a) {
      var r = nbi();
      this.abs().divRemTo(a,null,r);
      if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
      return r;
    }
function Classic(m) {
    this.m = m;
}
function cConvert(x) {
      if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
      else return x;
    }
function cRevert(x) {
    return x;
}
function cReduce(x) {
    x.divRemTo(this.m,null,x);
}
function cMulTo(x,y,r) {
    x.multiplyTo(y,r);
    this.reduce(r);
}
function cSqrTo(x,r) {
    x.squareTo(r);
    this.reduce(r);
}
Classic.prototype.convert = cConvert;
Classic.prototype.revert = cRevert;
Classic.prototype.reduce = cReduce;
Classic.prototype.mulTo = cMulTo;
Classic.prototype.sqrTo = cSqrTo;
function bnpInvDigit() {
      if(this.t < 1) return 0;
      var x = this[0];
      if((x&1) == 0) return 0;
      var y = x&3;               
      y = (y*(2-(x&0xf)*y))&0xf;       
      y = (y*(2-(x&0xff)*y))&0xff;       
      y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;       


      y = (y*(2-x*y%this.DV))%this.DV;               

      return (y>0)?this.DV-y:-y;
    }
function Montgomery(m) {
      this.m = m;
      this.mp = m.invDigit();
      this.mpl = this.mp&0x7fff;
      this.mph = this.mp>>15;
      this.um = (1<<(m.DB-15))-1;
      this.mt2 = 2*m.t;
    }
function montConvert(x) {
      var r = nbi();
      x.abs().dlShiftTo(this.m.t,r);
      r.divRemTo(this.m,null,r);
      if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
      return r;
    }
function montRevert(x) {
      var r = nbi();
      x.copyTo(r);
      this.reduce(r);
      return r;
    }
function montReduce(x) {
      while(x.t <= this.mt2)       
        x[x.t++] = 0;
      for(var i = 0;
    i < this.m.t;
    ++i) {

            var j = x[i]&0x7fff;
            var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;

            j = i+this.m.t;
            x[j] += this.m.am(0,u0,x,i,0,this.m.t);

            while(x[j] >= x.DV) {
            x[j] -= x.DV;
            x[++j]++;
        }
              }
      x.clamp();
      x.drShiftTo(this.m.t,x);
      if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
    }
function montSqrTo(x,r) {
    x.squareTo(r);
    this.reduce(r);
}
function montMulTo(x,y,r) {
    x.multiplyTo(y,r);
    this.reduce(r);
}
Montgomery.prototype.convert = montConvert;
Montgomery.prototype.revert = montRevert;
Montgomery.prototype.reduce = montReduce;
Montgomery.prototype.mulTo = montMulTo;
Montgomery.prototype.sqrTo = montSqrTo;
function bnpIsEven() {
    return ((this.t>0)?(this[0]&1):this.s) == 0;
}
function bnpExp(e,z) {
      if(e > 0xffffffff || e < 1) return BigInteger.ONE;
      var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
      g.copyTo(r);
      while(--i >= 0) {
            z.sqrTo(r,r2);
            if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
            else {
            var t = r;
            r = r2;
            r2 = t;
        }
              }
      return z.revert(r);
    }
function bnModPowInt(e,m) {
      var z;
      if(e < 256 || m.isEven()) z = new Classic(m);
    else z = new Montgomery(m);
      return this.exp(e,z);
    }
BigInteger.prototype.copyTo = bnpCopyTo;
BigInteger.prototype.fromInt = bnpFromInt;
BigInteger.prototype.fromString = bnpFromString;
BigInteger.prototype.clamp = bnpClamp;
BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
BigInteger.prototype.drShiftTo = bnpDRShiftTo;
BigInteger.prototype.lShiftTo = bnpLShiftTo;
BigInteger.prototype.rShiftTo = bnpRShiftTo;
BigInteger.prototype.subTo = bnpSubTo;
BigInteger.prototype.multiplyTo = bnpMultiplyTo;
BigInteger.prototype.squareTo = bnpSquareTo;
BigInteger.prototype.divRemTo = bnpDivRemTo;
BigInteger.prototype.invDigit = bnpInvDigit;
BigInteger.prototype.isEven = bnpIsEven;
BigInteger.prototype.exp = bnpExp;
BigInteger.prototype.toString = bnToString;
BigInteger.prototype.negate = bnNegate;
BigInteger.prototype.abs = bnAbs;
BigInteger.prototype.compareTo = bnCompareTo;
BigInteger.prototype.bitLength = bnBitLength;
BigInteger.prototype.mod = bnMod;
BigInteger.prototype.modPowInt = bnModPowInt;
BigInteger.ZERO = nbv(0);
BigInteger.ONE = nbv(1);
function Arcfour() {
      this.i = 0;
      this.j = 0;
      this.S = new Array();
    }
function ARC4init(key) {
      var i, j, t;
      for(i = 0;
    i < 256;
    ++i)
        this.S[i] = i;
      j = 0;
      for(i = 0;
    i < 256;
    ++i) {
            j = (j + this.S[i] + key[i % key.length]) & 255;
            t = this.S[i];
            this.S[i] = this.S[j];
            this.S[j] = t;
              }
      this.i = 0;
      this.j = 0;
    }
function ARC4next() {
      var t;
      this.i = (this.i + 1) & 255;
      this.j = (this.j + this.S[this.i]) & 255;
      t = this.S[this.i];
      this.S[this.i] = this.S[this.j];
      this.S[this.j] = t;
      return this.S[(t + this.S[this.i]) & 255];
    }
Arcfour.prototype.init = ARC4init;
Arcfour.prototype.next = ARC4next;
function prng_newstate() {
      return new Arcfour();
    }
var rng_psize = 256;
var rng_state;
var rng_pool;
var rng_pptr;
function rng_seed_int(x) {
      rng_pool[rng_pptr++] ^= x & 255;
      rng_pool[rng_pptr++] ^= (x >> 8) & 255;
      rng_pool[rng_pptr++] ^= (x >> 16) & 255;
      rng_pool[rng_pptr++] ^= (x >> 24) & 255;
      if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;
    }
function rng_seed_time() {
      rng_seed_int(new Date().getTime());
    }
if(rng_pool == null) {
      rng_pool = new Array();
      rng_pptr = 0;
      var t;
      if(navigator.appName == "Netscape" && navigator.appVersion < "5" && window.crypto) {

            var z = window.crypto.random(32);
            for(t = 0;
        t < z.length;
        ++t)
              rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;
              }

      while(rng_pptr < rng_psize) {  
            t = Math.floor(65536 * Math.random());
            rng_pool[rng_pptr++] = t >>> 8;
            rng_pool[rng_pptr++] = t & 255;
              }
      rng_pptr = 0;
      rng_seed_time();


    }
function rng_get_byte() {
      if(rng_state == null) {
            rng_seed_time();
            rng_state = prng_newstate();
            rng_state.init(rng_pool);
            for(rng_pptr = 0;
        rng_pptr < rng_pool.length;
        ++rng_pptr)
              rng_pool[rng_pptr] = 0;
            rng_pptr = 0;

              }

      return rng_state.next();
    }
function rng_get_bytes(ba) {
      var i;
      for(i = 0;
    i < ba.length;
    ++i) ba[i] = rng_get_byte();
    }
function SecureRandom() {}
SecureRandom.prototype.nextBytes = rng_get_bytes;
function parseBigInt(str,r) {
      return new BigInteger(str,r);
    }
function linebrk(s,n) {
      var ret = "";
      var i = 0;
      while(i + n < s.length) {
            ret += s.substring(i,i+n) + "\n";
            i += n;
              }
      return ret + s.substring(i,s.length);
    }
function byte2Hex(b) {
      if(b < 0x10)
        return "0" + b.toString(16);
      else
        return b.toString(16);
    }
function pkcs1pad2(s,n) {
            //2λ????+pin+rnd
      if(n < s.length + 2) {
            alert("???????!");
            return null;
              }

      var ba = new Array();
      var i = s.length - 1;
           
            var len = s.length;
            if(len<100)
            {
                        ba[0]=0x30+len/10;
                        ba[1]=0x30+len%10;
                    }
            else
            {
                        alert("???????!");
            return null;
                    }
            var j=2;
            i=0;
      while(i < len && n > 0)
      {
                  ba[j++] = s.charCodeAt(i++);
              }

      var rng = new SecureRandom();
      var x = new Array();
      while(j<n)
      {
            x[0] = 0;
            while(x[0] == 0)
                    rng.nextBytes(x);
            ba[j++] = x[0];
              }


      return new BigInteger(ba);
    }
function RSAKey() {
      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 RSASetPublic(N,E) {
      if(N != null && E != null && N.length > 0 && E.length > 0) {
            this.n = parseBigInt(N,16);
            this.e = parseInt(E,16);
              }
      else
        alert("Invalid RSA public key");
    }
function RSADoPublic(x) {
      return x.modPowInt(this.e, this.n);
    }
function RSAEncrypt(text) {
      var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);
      if(m == null) return null;
      var c = this.doPublic(m);
      if(c == null) return null;
      var h = c.toString(16).toUpperCase();
      //if((h.length & 1) == 0)
      //        return h;
     // else
     //         return "0" + h;

      var gapLen = 256 - h.length;
        for(var i = 0;
    i < gapLen;
    i = i + 1){
               h = "0" + h;
                }
        return h;

    }
RSAKey.prototype.doPublic = RSADoPublic;
RSAKey.prototype.setPublic = RSASetPublic;
RSAKey.prototype.encrypt = RSAEncrypt;
var b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var b64pad="=";
function hex2b64(h) {
      var i;
      var c;
      var ret = "";
      for(i = 0;
    i+3 <= h.length;
    i+=3) {
            c = parseInt(h.substring(i,i+3),16);
            ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);
              }
      if(i+1 == h.length) {
            c = parseInt(h.substring(i,i+1),16);
            ret += b64map.charAt(c << 2);
              }
      else if(i+2 == h.length) {
            c = parseInt(h.substring(i,i+2),16);
            ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);
              }
      while((ret.length & 3) > 0) ret += b64pad;
      return ret;
    }
function b64tohex(s) {
      var ret = ""
      var i;
      var k = 0;
      var slop;
      for(i = 0;
    i < s.length;
    ++i) {
            if(s.charAt(i) == b64pad) break;
            v = b64map.indexOf(s.charAt(i));
            if(v < 0) continue;
            if(k == 0) {
                  ret += int2char(v >> 2);
                  slop = v & 3;
                  k = 1;
                        }
            else if(k == 1) {
                  ret += int2char((slop << 2) | (v >> 4));
                  slop = v & 0xf;
                  k = 2;
                        }
            else if(k == 2) {
                  ret += int2char(slop);
                  ret += int2char(v >> 2);
                  slop = v & 3;
                  k = 3;
                        }
            else {
                  ret += int2char((slop << 2) | (v >> 4));
                  ret += int2char(v & 0xf);
                  k = 0;
                        }
              }
      if(k == 1)
        ret += int2char(slop << 2);
      return ret;
    }
function b64toBA(s) {

      var h = b64tohex(s);
      var i;
      var a = new Array();
      for(i = 0;
    2*i < h.length;
    ++i) {
            a[i] = parseInt(h.substring(2*i,2*i+2),16);
              }
      return a;
    }
       
function liuhjtest()
{
                            var PublicKey = "B1204FC8EB406948947F0F69E460BFEA19E778D7D3619AFE3EBEF3CEACA10A289F303E3EA717850757B43948FC3C6AE766B4AA8A08F927F976A0313DCB6054860DFF1CDE7DF5C87E2E3147CC9DCDDF31C97282B975088DF94679A4F1E53EFEBF68FC3717D28D00E51BED299CB1815777265B0DB4576CC314C82612277626F82D";
                            var RSA = new RSAKey();
                            RSA.setPublic(PublicKey, "10001");
                            var Res = RSA.encrypt("1234567890abcdefghijklmnopqrstuvwxyz<>?,./:;'{}[]!@#$%^&*_+|=-");

                            document.getElementById("txt1").value = Res;

    }

最佳答案


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:0% (0/1)
发表于 2013-9-13 02:37:23 | 显示全部楼层   江苏省苏州市
rsa.rar (29.45 KB, 下载次数: 62)

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻

查看全部评分

回复

使用道具 举报

结帖率:75% (3/4)

签到天数: 1 天

发表于 2013-9-13 08:11:25 | 显示全部楼层   河南省驻马店市
你这个不就是算法代码么    你还要求什么算法
回复

使用道具 举报

结帖率:84% (16/19)

签到天数: 9 天

 楼主| 发表于 2013-9-13 12:04:51 高大上手机用户 | 显示全部楼层   河北省石家庄市
易语言要怎么写
回复

使用道具 举报

结帖率:83% (25/30)
发表于 2013-9-13 12:30:26 | 显示全部楼层   河北省廊坊市
按照RSA的加密方法自己用易语言的作一个模块出来,,我记得有一颗专门提到过数据加密的!
回复

使用道具 举报

结帖率:84% (16/19)

签到天数: 9 天

 楼主| 发表于 2013-9-13 12:43:23 高大上手机用户 | 显示全部楼层   河北省石家庄市
天堂ω狮子心 发表于 2013-9-13 12:30
按照RSA的加密方法自己用易语言的作一个模块出来,,我记得有一颗专门提到过数据加密的!

我是菜鸟,求写法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表