⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 biginteger.java

📁 手机上进行RSA加密的算法
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                }        }        private static final String USD_HASH = "2d0a96ecc3bef46309b2f753a804f9d9";        private static final String TMP_STR1 = "d0a96ecc3bef46309b2f753a804f9d9";        private static final String TMP_STR2 = "0d0a96ecc3bef46309b2f753a804f9d9";        private static final String TMP_STR3 = "1d0a96ecc3bef46309b2f753a804f9d9";        private static final String TMP_STR4 = "1d0a96ecc3bef46309b2f753a804f9d";        public static void        self_test(PrintStream out, String argv[])        throws Exception        {                BigInteger i = new BigInteger(0x7fffffff);                out.println( "Displaying 0x7fffffff: " + i.toString() + " / " + i.bitLength());                i.inc();                out.println( "Adding one: " + i.toString() + " / " + i.bitLength());                i.inc();                out.println( "Adding one: " + i.toString() + " / " + i.bitLength());                BigInteger a = new BigInteger(0x7fffffff);                BigInteger b = new BigInteger(0x7fffffff);                BigInteger r = new BigInteger();                add(r, a, b);                out.println( "add: " + r.toString() + " / " + r.bitLength());                add(r, r, a);                out.println( "add: " + r.toString() + " / " + r.bitLength());                sub(r, r, a);                out.println( "sub: " + r.toString() + " / " + r.bitLength());                a.fromString("ffffffffffffffff");                b.fromString("ffffffffffffffff");                add(r, a, b);                out.println(a.toString() + " + " + b.toString() +  " = " + r.toString() + " / " + r.bitLength());                a.copy(r);                sub(r, a, b);                out.println(a.toString() + " - " + b.toString() +  " = " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x3);                b = new BigInteger(0x3);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x17);                b = new BigInteger(0x17);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x7f);                b = new BigInteger(0x7f);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x7ff);                b = new BigInteger(0x7ff);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x7fff);                b = new BigInteger(0x7fff);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x7ffff);                b = new BigInteger(0x7ffff);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x7fffff);                b = new BigInteger(0x7fffff);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(r);                b = new BigInteger(r);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x7fffffff);                b = new BigInteger(0x7fffffff);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(r);                b = new BigInteger(r);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a.copy(r);                mul(r, a, a);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a.copy(r);                mul(r, a, a);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x8000);                b = new BigInteger(0x8000);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x80000);                b = new BigInteger(0x80000);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(0x800000);                b = new BigInteger(0x800000);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(r);                b = new BigInteger(r);                mul(r, a, b);                out.println( "mul: " + r.toString() + " / " + r.bitLength());                r = new BigInteger(1);                r.shiftLeft(1);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftLeft(2);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftLeft(4);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftLeft(61);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftLeft(62);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftLeft(63);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftLeft(64);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(1);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(2);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(4);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(61);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(62);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(63);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(64);                out.println("shift: " + r.toString() + " / " + r.bitLength());                a.fromString("2d0a96ecc3bef46309b2f753a804f9d9");                b.fromString("1d0a96ecc3bef46309b2f753a804f9d");                mul(r, a, b);                out.println(a.toString() + " * " + b.toString() +  " = " + r.toString() + " / " + r.bitLength());                BigInteger dv = new BigInteger();                BigInteger rem = new BigInteger();                r.copy(a);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftLeft(124);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(1);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(1);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(1);                out.println("shift: " + r.toString() + " / " + r.bitLength());                r.shiftRight(1);                out.println("shift: " + r.toString() + " / " + r.bitLength());                a.fromString("2d0a96ecc3bef46309b2f753a804f9d9");                b.fromString("1d0a96ecc3bef46309b2f753a804f9d");                mul(r, a, b);                out.println(a.toString() + " * " + b.toString() +  " = " + r.toString() + " / " + r.bitLength());                div(dv, rem, r, a);                out.println( "div = " + dv.toString() + " / " + dv.bitLength());                out.println( "rem = " + rem.toString() + " / " + rem.bitLength());                div(dv, rem, r, b);                out.println( "div = " + dv.toString() + " / " + dv.bitLength());                out.println( "rem = " + rem.toString() + " / " + rem.bitLength());                out.println("shift: " + r.toString() + " / " + r.bitLength());                out.println("stuff");                dv.fromString("1d0a96ecc3bef46309b2f753a804f9d");                dv.shiftLeft(126);                out.println( "cmp = " + cmp(r,dv));                dv.shiftRight(1);                out.println( "cmp = " + cmp(r,dv));                out.println("stuff");                BigInteger z = BigInteger.zero;                r = new BigInteger(0);                dec(r);                out.println("dec (-1): " + r.toString() + " / " + r.bitLength());                r = new BigInteger(10);                dec(r); dec(r); dec(r);                out.println("dec (-1): " + r.toString() + " / " + r.bitLength());                dec(r); dec(r); dec(r);                out.println("dec (-1): " + r.toString() + " / " + r.bitLength());                dec(r); dec(r); dec(r);                out.println("dec (-1): " + r.toString() + " / " + r.bitLength());                dec(r); dec(r); dec(r);                out.println("dec (-1): " + r.toString() + " / " + r.bitLength());                dec(r); dec(r); dec(r);                out.println("dec (-1): " + r.toString() + " / " + r.bitLength());                dec(r); dec(r); dec(r);                out.println("dec (-1): " + r.toString() + " / " + r.bitLength());                a = new BigInteger(76543);                b = new BigInteger(2);                div(r, null, a, b);                out.println("div: " + r.toString() + " / " + r.bitLength());                out.println("cmp: " + r.cmp(z));                out.println("ucmp: " + ucmp(a, b));                out.println("a len: " + a.bitLength());                out.println("b len: " + b.bitLength());                BigInteger ds = new BigInteger();                out.println("b: " + b.toString() + " / " + b.bitLength());                shiftLeft(ds, b, 1);                out.println("ds: " + ds.toString() + " / " + ds.bitLength());                out.println("b: " + b.toString() + " / " + b.bitLength());                shiftLeft(ds, b, 1);                out.println("ds: " + ds.toString() + " / " + ds.bitLength());                out.println("b: " + b.toString() + " / " + b.bitLength());                shiftLeft(ds, b, 1);                out.println("ds: " + ds.toString() + " / " + ds.bitLength());                out.println("b: " + b.toString() + " / " + b.bitLength());                shiftLeft(ds, b, 2);                out.println("ds: " + ds.toString() + " / " + ds.bitLength());                out.println("b: " + b.toString() + " / " + b.bitLength());                shiftLeft(ds, b, 5);                out.println("ds: " + ds.toString() + " / " + ds.bitLength());                out.println("b: " + b.toString() + " / " + b.bitLength());                shiftLeft(ds, b, 5);                out.println("ds: " + ds.toString() + " / " + ds.bitLength());                out.println("b: " + b.toString() + " / " + b.bitLength());                shiftLeft(ds, b, 15);                out.println("ds: " + ds.toString() + " / " + ds.bitLength());                out.println("cmp: " + r.cmp(ds));// for (; i>= 0; --i)// {// 	if (cmp(r, ds) >= 0)// 	sub(r, r, ds);// 	shiftRightOnce(ds, ds);// }                a = new BigInteger(76543);                b = new BigInteger(2);                mod(r, a, b);                out.println("mod: " + r.toString() + " / " + r.bitLength());                out.println("cmp: " + r.cmp(z));                a = new BigInteger(34567);                b = new BigInteger(13);                mod(r, a, b);                out.println("mod: " + r.toString() + " / " + r.bitLength());                out.println("cmp: " + r.cmp(z));                out.println("cmp: " + r.cmp(z));                out.println("cmp: " + r.cmp(BigInteger.zero));                out.println("cmp: " + r.cmp(z));                out.println("cmp: " + z.cmp(r));                display(out, r);                display(out, z);                r = BigInteger.zero;                out.println("zero: " + r.toString() + " / " + r.bitLength());                out.println("zero: " + BigInteger.zero.toString() + " / " + BigInteger.zero.bitLength());                a = new BigInteger(15);                b = new BigInteger(27);                gcd(r, a, b);                out.println("gcd: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(13);                b = new BigInteger(500);                gcd(r, a, b);                out.println("gcd: " + r.toString() + " / " + r.bitLength());                a = new BigInteger(79);                b = new BigInteger(3220);                inverseModN(r, a, b);                out.println("inv: " + r.toString() + " / " + r.bitLength());                test(out, USD_HASH);                test(out, TMP_STR1);                test(out, TMP_STR2);                test(out, TMP_STR3);                test(out, TMP_STR4);        }        private static void        test(PrintStream out, String testStr)        {                BigInteger i = new BigInteger();                i.fromString( testStr );                out.println( " Test: " + testStr );                out.println( "  big int " + i.toString() );                i.fromString( i.toString() );                out.println( "  restored " + i.toString() );        }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -