安装nodejs,将下面代码保存为password.js,控制台运行 node password.js
var n = 16, o = n, p = 65536, q = p >>> 1, r = p * p, s = p - 1;
rsaFun = function(e) {
var t = "ab86b6371b5318aaa1d3c9e612a9f1264f372323c8c0f19875b5fc3b3fd3afcc1e5bec527aa94bfa85bffc157e4245aebda05389a5357b75115ac94f074aefcd",
a = "10001",
n = getKeyPair(a, "", t);
//console.log('+++n is:',n);
var i = encryptedString(n, encodeURIComponent(e)).replace(/\s/g, "-");
return i
}
biToHex = function(a) {
var b = "";
biHighIndex(a);
for (var c = biHighIndex(a); c > -1; --c)
b += digitToHex(a.digits[c]);
return b
}
digitToHex = function(a) {
var x = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
var b = 15,
c = "";
for (i = 0; 4 > i; ++i)
c += x[a & b],
a >>>= 4;
return reverseStr(c)
}
reverseStr = function(a) {
for (var b = "", c = a.length - 1; c > -1; --c)
b += a.charAt(c);
return b
}
encryptedString = function(a, b) {
for (var c = [], d = b.length, e = 0; d > e;)
c[e] = b.charCodeAt(e),
e++;
for (; 0 != c.length % a.chunkSize;)
c[e++] = 0;
var g, h, i, j = c.length, k = "";
for (e = 0; j > e; e += a.chunkSize) {
for (i = new T,
g = 0, h = e;
h < e + a.chunkSize; ++g)
i.digits[g] = c[h++],
i.digits[g] += c[h++] << 8;
var l = a.barrett.powMod(i, a.e),
m = 16 == a.radix ? biToHex(l) : biToString(l, a.radix);
k += m + " "
}
return k.substring(0, k.length - 1)
}
getKeyPair = function(a, b, c) {
return new A(a, b, c)
}
A = function(a, b, c) {
this.e = biFromHex(a),
this.d = biFromHex(b),
this.m = biFromHex(c),
this.chunkSize = 2 * biHighIndex(this.m),
this.radix = 16,
this.barrett = new BarrettMu(this.m)
}
biDivideByRadixPower = function(a, b) {
var c = new T;
return arrayCopy(a.digits, b, c.digits, 0, c.digits.length - b),
c
}
biModuloByRadixPower = function(a, b) {
var c = new T;
return arrayCopy(a.digits, 0, c.digits