日期:2014-05-20  浏览次数:20837 次

rsa算法中寻找素数的概率测试算法
用java 写的算法,是关于rsa中寻找素数的一个概率性测试算法???????????
测试 算法 RSA Java

------解决方案--------------------

------解决方案--------------------
是不是这个

SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");

------解决方案--------------------
RSA 中寻找素数?RSA 的公私钥都是由两个大素数生成的,不是很明白你提问的目的。

素性测试可以使用 Miller-Rabin 素性测试,写了段代码,供为参数:

public class MillerRabin {

    public static void main(String[] args) {
        long t0, t1;
        t0 = System.nanoTime();
        boolean b = !isComposite(479001599);
        boolean c = !isComposite(456789012);
        t1 = System.nanoTime();
        System.out.println(t1 - t0);
        System.out.println(b + " " + c);
    }

    /**
     * <p>Miller-Rabin 测试某一个数是否是合数</p>
     *
     * @param n 需要测试的数
     * @return true: 该数为合数;false: 该数为素数
     */
    public static boolean isComposite(int n) {
        if (n < 2) {
            throw new IllegalArgumentException("number must greater than or equals 2");
        }
        // 排除 2、3、5、7 以加速测试
        if (n == 2 
------解决方案--------------------
 n == 3 
------解决方案--------------------
 n == 5 
------解决方案--------------------
 n == 7) {
            return false;
        }

        // 偶数
        if ((n & 1) == 0) {
            return true;
        }

        // 排除 3、5、7 的倍数,以加速测试
        if (n % 3 == 0) {