当前位置: 首页 > news >正文

网站建设低价建站手机网站建设的行情

网站建设低价建站,手机网站建设的行情,网站网页切换怎么做的,免费给别人开发网站前言: 趁热打铁,标记一下RSA的算法逆向...第二篇会有详解(本篇重在过程) 正文: 废话不说,直接分析步骤图: 到了这里,可以看到在登录的时候,需要验证码(本篇不教反验证码) 下面是正题---逆他的pwd(密码) 总结: 问题:怎么确定一个密文数据是基于什么算法做出来的呢? 答:…前言: 趁热打铁,标记一下RSA的算法逆向...第二篇会有详解(本篇重在过程) 正文: 废话不说,直接分析步骤图: 到了这里,可以看到在登录的时候,需要验证码(本篇不教反验证码) 下面是正题---逆他的pwd(密码) 总结: 问题:怎么确定一个密文数据是基于什么算法做出来的呢? 答: 1.看他是由什么组成的 --如果光是由 字母和数字组成                --由字母和数字组成的32位密文数据 ,MD5                --由字母和数字组成的64位密文数据 ,SHA-256(生成256位长度的哈希值这通常以64个十六进制字符呈现)                --由字母和数字组成的256位密文数据,RSA         ---以上是通常的例子 针对rsa,直接抠他代码会比较直接,但是比较繁琐; 当你过了一遍他的代码,没大问题,一样可以引用crypto库进行解密 全篇js代码: var bitsPerDigit16 function arrayCopy(src, srcStart, dest, destStart, n) {var m Math.min(srcStart n, src.length);for (var i srcStart, j destStart; i m; i, j) {dest[j] src[i];} } var maxDigitVal 65535 var biRadixBits 16 function biMultiplyDigit(x, y) {var n, c, uv;result new BigInt();n biHighIndex(x);c 0;for (var j 0; j n; j) {uv result.digits[j] x.digits[j] * y c;result.digits[j] uv maxDigitVal;c uv biRadixBits;}result.digits[1 n] c;return result; }function biNumBits(x) {var n biHighIndex(x);var d x.digits[n];var m (n 1) * bitsPerDigit;var result;for (result m; result m - bitsPerDigit; --result) {if ((d 0x8000) ! 0) break;d 1;}return result; } var highBitMasks new Array(0x0000, 0x8000, 0xC000, 0xE000, 0xF000, 0xF800,0xFC00, 0xFE00, 0xFF00, 0xFF80, 0xFFC0, 0xFFE0,0xFFF0, 0xFFF8, 0xFFFC, 0xFFFE, 0xFFFF); function biShiftLeft(x, n) {var maxDigitVal 65535var digitCount Math.floor(n / bitsPerDigit);var result new BigInt();arrayCopy(x.digits, 0, result.digits, digitCount,result.digits.length - digitCount);var bits n % bitsPerDigit;var rightBits bitsPerDigit - bits;for (var i result.digits.length - 1, i1 i - 1; i 0; --i, --i1) {result.digits[i] ((result.digits[i] bits) maxDigitVal) |((result.digits[i1] highBitMasks[bits]) (rightBits));}result.digits[0] ((result.digits[i] bits) maxDigitVal);result.isNeg x.isNeg;return result; } function biMultiplyByRadixPower(x, n) {var result new BigInt();arrayCopy(x.digits, 0, result.digits, n, result.digits.length - n);return result; } function biCompare(x, y) {if (x.isNeg ! y.isNeg) {return 1 - 2 * Number(x.isNeg);}for (var i x.digits.length - 1; i 0; --i) {if (x.digits[i] ! y.digits[i]) {if (x.isNeg) {return 1 - 2 * Number(x.digits[i] y.digits[i]);} else {return 1 - 2 * Number(x.digits[i] y.digits[i]);}}}return 0; } function biSubtract(x, y) {var result;if (x.isNeg ! y.isNeg) {y.isNeg !y.isNeg;result biAdd(x, y);y.isNeg !y.isNeg;} else {result new BigInt();var n, c;c 0;for (var i 0; i x.digits.length; i) {n x.digits[i] - y.digits[i] c;result.digits[i] n 0xffff;// Stupid non-conforming modulus operation.if (result.digits[i] 0) result.digits[i] biRadix;c 0 - Number(n 0);}// Fix up the negative sign, if any.if (c -1) {c 0;for (var i 0; i x.digits.length; i) {n 0 - result.digits[i] c;result.digits[i] n 0xffff;// Stupid non-conforming modulus operation.if (result.digits[i] 0) result.digits[i] biRadix;c 0 - Number(n 0);}// Result is opposite sign of arguments.result.isNeg !x.isNeg;} else {// Result is same sign.result.isNeg x.isNeg;}}return result; } var lowBitMasks new Array(0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F,0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF,0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF); function biShiftRight(x, n) {var digitCount Math.floor(n / bitsPerDigit);var result new BigInt();arrayCopy(x.digits, digitCount, result.digits, 0,x.digits.length - digitCount);var bits n % bitsPerDigit;var leftBits bitsPerDigit - bits;for (var i 0, i1 i 1; i result.digits.length - 1; i, i1) {result.digits[i] (result.digits[i] bits) |((result.digits[i1] lowBitMasks[bits]) leftBits);}result.digits[result.digits.length - 1] bits;result.isNeg x.isNeg;return result; } function biDivideModulo(x, y) {var nb biNumBits(x);var tb biNumBits(y);var origYIsNeg y.isNeg;var q, r;if (nb tb) {// |x| |y|if (x.isNeg) {q biCopy(bigOne);q.isNeg !y.isNeg;x.isNeg false;y.isNeg false;r biSubtract(y, x);// Restore signs, cause theyre references.x.isNeg true;y.isNeg origYIsNeg;} else {q new BigInt();r biCopy(x);}return new Array(q, r);}q new BigInt();r x;var bitsPerDigit 16// Normalize Y.var t Math.ceil(tb / bitsPerDigit) - 1;var lambda 0;var biHalfRadix 32768while (y.digits[t] biHalfRadix) {y biShiftLeft(y, 1);lambda;tb;t Math.ceil(tb / bitsPerDigit) - 1;}// Shift r over to keep the quotient constant. Well shift the// remainder back at the end.r biShiftLeft(r, lambda);nb lambda; // Update the bit count for x.var n Math.ceil(nb / bitsPerDigit) - 1;var b biMultiplyByRadixPower(y, n - t);while (biCompare(r, b) ! -1) {q.digits[n - t];r biSubtract(r, b);}for (var i n; i t; --i) {var ri (i r.digits.length) ? 0 : r.digits[i];var ri1 (i - 1 r.digits.length) ? 0 : r.digits[i - 1];var ri2 (i - 2 r.digits.length) ? 0 : r.digits[i - 2];var yt (t y.digits.length) ? 0 : y.digits[t];var biRadix 65536var yt1 (t - 1 y.digits.length) ? 0 : y.digits[t - 1];if (ri yt) {q.digits[i - t - 1] maxDigitVal;} else {q.digits[i - t - 1] Math.floor((ri * biRadix ri1) / yt);}var biRadixSquared 4294967296var c1 q.digits[i - t - 1] * ((yt * biRadix) yt1);var c2 (ri * biRadixSquared) ((ri1 * biRadix) ri2);while (c1 c2) {--q.digits[i - t - 1];c1 q.digits[i - t - 1] * ((yt * biRadix) | yt1);c2 (ri * biRadix * biRadix) ((ri1 * biRadix) ri2);}b biMultiplyByRadixPower(y, i - t - 1);r biSubtract(r, biMultiplyDigit(b, q.digits[i - t - 1]));if (r.isNeg) {r biAdd(r, b);--q.digits[i - t - 1];}}r biShiftRight(r, lambda);// Fiddle with the signs and stuff to make sure that 0 r y.q.isNeg x.isNeg ! origYIsNeg;if (x.isNeg) {if (origYIsNeg) {q biAdd(q, bigOne);} else {q biSubtract(q, bigOne);}y biShiftRight(y, lambda);r biSubtract(y, r);}// Check for the unbelievably stupid degenerate case of r -0.if (r.digits[0] 0 biHighIndex(r) 0) r.isNeg false;return new Array(q, r); } function biDivide(x, y) {return biDivideModulo(x, y)[0]; } function biCopy(bi) {var result new BigInt(true);result.digits bi.digits.slice(0);result.isNeg bi.isNeg;return result; } function biDivideByRadixPower(x, n) {var result new BigInt();arrayCopy(x.digits, n, result.digits, 0, result.digits.length - n);return result; } function biModuloByRadixPower(x, n) {var result new BigInt();arrayCopy(x.digits, 0, result.digits, 0, n);return result; } function BarrettMu_modulo(x) {var q1 biDivideByRadixPower(x, this.k - 1);var q2 biMultiply(q1, this.mu);var q3 biDivideByRadixPower(q2, this.k 1);var r1 biModuloByRadixPower(x, this.k 1);var r2term biMultiply(q3, this.modulus);var r2 biModuloByRadixPower(r2term, this.k 1);var r biSubtract(r1, r2);if (r.isNeg) {r biAdd(r, this.bkplus1);}var rgtem biCompare(r, this.modulus) 0;while (rgtem) {r biSubtract(r, this.modulus);rgtem biCompare(r, this.modulus) 0;}return r; } function biMultiply(x, y) {var result new BigInt();var c;var n biHighIndex(x);var t biHighIndex(y);var u, uv, k;for (var i 0; i t; i) {c 0;k i;for (j 0; j n; j, k) {uv result.digits[k] x.digits[j] * y.digits[i] c;result.digits[k] uv maxDigitVal;c uv biRadixBits;}result.digits[i n 1] c;}// Someone give me a logical xor, please.result.isNeg x.isNeg ! y.isNeg;return result; } function BarrettMu_multiplyMod(x, y) {/*x this.modulo(x);y this.modulo(y);*/var xy biMultiply(x, y);return this.modulo(xy); }function BarrettMu_powMod(x, y) {var result new BigInt();result.digits[0] 1;var a x;var k y;while (true) {if ((k.digits[0] 1) ! 0) result this.multiplyMod(result, a);k biShiftRight(k, 1);if (k.digits[0] 0 biHighIndex(k) 0) break;a this.multiplyMod(a, a);}return result; }function BarrettMu(m) {this.modulus biCopy(m);this.k biHighIndex(this.modulus) 1;var b2k new BigInt();b2k.digits[2 * this.k] 1; // b2k b^(2k)this.mu biDivide(b2k, this.modulus);this.bkplus1 new BigInt();this.bkplus1.digits[this.k 1] 1; // bkplus1 b^(k1)this.modulo BarrettMu_modulo;this.multiplyMod BarrettMu_multiplyMod;this.powMod BarrettMu_powMod; } function charToHex(c) {var ZERO 48;var NINE ZERO 9;var littleA 97;var littleZ littleA 25;var bigA 65;var bigZ 65 25;var result;if (c ZERO c NINE) {result c - ZERO;} else if (c bigA c bigZ) {result 10 c - bigA;} else if (c littleA c littleZ) {result 10 c - littleA;} else {result 0;}return result; } function hexToDigit(s) {var result 0;var sl Math.min(s.length, 4);for (var i 0; i sl; i) {result 4;result | charToHex(s.charCodeAt(i))}return result; } function biHighIndex(x) {var result x.digits.length - 1;while (result 0 x.digits[result] 0) --result;return result; } function biFromHex(s) {var result new BigInt();var sl s.length;for (var i sl, j 0; i 0; i - 4, j) {result.digits[j] hexToDigit(s.substr(Math.max(i - 4, 0), Math.min(i, 4)));}return result; }function RSAKeyPair(encryptionExponent, decryptionExponent, modulus, keylen){this.e biFromHex(encryptionExponent); this.d biFromHex(decryptionExponent); this.m biFromHex(modulus);if (typeof(keylen) ! number) { this.chunkSize 2 * biHighIndex(this.m); } else { this.chunkSize keylen / 8; }this.radix 16;this.barrett new BarrettMu(this.m); }function BigInt(flag) {if (typeof flag boolean flag true) {this.digits null;}else {this.digits ZERO_ARRAY.slice(0);}this.isNeg false; }function setMaxDigits(value) {maxDigits value;ZERO_ARRAY new Array(maxDigits);for (var iza 0; iza ZERO_ARRAY.length; iza) ZERO_ARRAY[iza] 0;bigZero new BigInt();bigOne new BigInt();bigOne.digits[0] 1; } var hexToChar new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,a, b, c, d, e, f); function reverseStr(s) {var result ;for (var i s.length - 1; i -1; --i) {result s.charAt(i);}return result; } function digitToHex(n) {var mask 0xf;var result ;for (i 0; i 4; i) {result hexToChar[n mask];n 4;}return reverseStr(result); } function biToHex(x) {var result ;var n biHighIndex(x);for (var i biHighIndex(x); i -1; --i) {result digitToHex(x.digits[i]);}return result; } function encryptedString(key, s, pad, encoding) {var a new Array(); // The usual Alice and Bob stuffvar sl s.length; // Plaintext string lengthvar i, j, k; // The usual Fortran index stuffvar padtype; // Type of padding to dovar encodingtype; // Type of output encodingvar rpad; // Random padvar al; // Array lengthvar result ; // Cypthertext resultvar block; // Big integer block to encryptvar crypt; // Big integer resultvar text; // Text result/** Figure out the padding type.*/if (typeof (pad) string) {if (pad RSAAPP.NoPadding) {padtype 1;} else if (pad RSAAPP.PKCS1Padding) {padtype 2;} else {padtype 0;}} else {padtype 0;}/** Determine encoding type.*/if (typeof (encoding) string encoding RSAAPP.RawEncoding) {encodingtype 1;} else {encodingtype 0;}if (padtype 1) {if (sl key.chunkSize) {sl key.chunkSize;}} else if (padtype 2) {if (sl (key.chunkSize - 11)) {sl key.chunkSize - 11;}}i 0;if (padtype 2) {j sl - 1;} else {j key.chunkSize - 1;}while (i sl) {if (padtype) {a[j] s.charCodeAt(i);} else {a[i] s.charCodeAt(i);}i;j--;}if (padtype 1) {i 0;}j key.chunkSize - (sl % key.chunkSize);while (j 0) {if (padtype 2) {rpad Math.floor(Math.random() * 256);while (!rpad) {rpad Math.floor(Math.random() * 256);}a[i] rpad;} else {a[i] 0;}i;j--;}if (padtype 2) {a[sl] 0;a[key.chunkSize - 2] 2;a[key.chunkSize - 1] 0;}/** Carve up the plaintext and encrypt each of the resultant blocks.*/al a.length;for (i 0; i al; i key.chunkSize) {/** Get a block.*/block new BigInt();j 0;for (k i; k (i key.chunkSize); j) {block.digits[j] a[k];block.digits[j] a[k] 8;}/** Encrypt it, convert it to text, and append it to the result.*/crypt key.barrett.powMod(block, key.e);if (encodingtype 1) {text biToBytes(crypt);} else {text (key.radix 16) ? biToHex(crypt) : biToString(crypt, key.radix);}result text;}/** Return the result, removing the last space.*/ //result (result.substring(0, result.length - 1));return result; }function rsa(arg) {setMaxDigits(130);var PublicExponent 10001;var modulus be44aec4d73408f6b60e6fe9e3dc55d0e1dc53a1e171e071b547e2e8e0b7da01c56e8c9bcf0521568eb111adccef4e40124b76e33e7ad75607c227af8f8e0b759c30ef283be8ab17a84b19a051df5f94c07e6e7be5f77866376322aac944f45f3ab532bb6efc70c1efa524d821d16cafb580c5a901f0defddea3692a4e68e6cd;var key new RSAKeyPair(PublicExponent, , modulus);// console.log(key, arg) 验证看一下 --自己出错了没?return encryptedString(key, arg);};console.log(rsa(输入你的密码)) (预告---下篇,详解本章的代码)
http://www.sadfv.cn/news/189803/

相关文章:

  • 网站的需求分析怎么写国家备案网查询系统
  • 网站网络投票建设模板临沂品牌网站推广
  • 如何给网站刷流量企业管理咨询考试题及答案
  • 网站系统里不能打印哈尔滨市工程信息网
  • 厦门 网站制作我想做自己网站怎么做
  • dede如何制作网站地图手机ps抠图软件下载
  • 门户网站开发语言千库网登录入口
  • 微信网站搭建多少钱湛江市网站建设
  • 咸宁市做网站笔记本网站开发背景
  • 怎么办网站平台做网站用什么后缀好
  • 做网站刷东西网站根据城市做二级目录
  • 免费网站赚钱win7系统如何重装wordpress
  • 商务电商网站建设南皮县网站建设价格
  • 织梦菜谱网站模板免费下载排行榜123网
  • 做网络平台的网站有哪些wordpress 主题 排行榜
  • 网站安全检测中心网站做下cdn
  • 去哪找做网站的人网站收录后才可以做排名吗
  • 物流公司网站源码建设介绍网站
  • 网站可以一个人做吗网站的切图是谁来做
  • 订阅号做微网站需要认证吗wordpress 1.6.2漏洞
  • 高端网站建设优化软件网站开发合同
  • 做网站需要注意的绿色大气漂亮dedecms茶叶企业网站
  • 先做网站还是先域名备案电商网站开发教程
  • 做网站选大公司好还是小公司滨州市建设局网站
  • 安徽合肥制作网站公司哪家好怎么做整人点不完的网站视频
  • o2o网站建设方案讲解网站服务器速度对seo有什么影响
  • 郑州网站优化价格长湖南营销型网站
  • 温州微网站VIP视频网站有得做吗
  • 企业收录网站wordpress页面写文章
  • 网站的排版好看wordpress 装修 模板