import java.security.SecureRandom;
public class MillerRabin {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("2047\t"+MillerRabin(2047, 1));
System.out.println("1203972837\t"+MillerRabin(1203972837, 1));
System.out.println("65535\t"+MillerRabin(65535, 1));
}
/**
*
* @param n The number should be tested whether it is a prime.
* @param t
* @return
* true means n is a prime with a probability of (1/4)^t.
* false means n is a composite number with a probability of 1.
*/
public static boolean MillerRabin(int n,int t)
{
for(int i=0;i<t;i++)
if(!isPrime(n))
return false;
return true;
}
/**
*
* @param n The number should be tested whether it is a prime.
*/
public static boolean isPrime(int n)
{
int k,q;
SecureRandom random=new SecureRandom();
for(k=0;(((n-1)>>k)&1)==0;k++);
q=(n-1)>>k;
int a=random.nextInt(n);
if(squareMultiply(a, q, n)==1)
return true;
for(int j=0;j<k;j++)
if(squareMultiply(a, (int)Math.pow(2, j)*q, n)==n-1)
return true;
return false;
}
public static int squareMultiply(int a,int b,int p)
{
int x=1,y=a;
int len=(int)Math.ceil((Math.log(b)/Math.log(2)));
for(int i=0;i<len;i++)
{
if(((b>>i)&1)==1)
{
x=(x*y)%p;
}
y=(y*y)%p;
}
return x;
}
}
分享到:
相关推荐
Miller-Rabin算法的C语言实现代码,大家可以看看,希望对大家有帮助!
程序实现了Miller-Rabin算法判断一个数是否是素数
密码学实验三之:Miller-Rabin算法和Mont算法的C++实现。适用于密码学和C++的初学者,希望对大家有帮助。
//对Miller-Rabin算法的进一步改进,速度约为0.4秒验证一个素数(CPU为赛扬1.5G) //本程序使用Miller Rabin方法计算1024位素数(2进制)
miller-rabin素性检测算法的源代码 能够运行,很好的资源哦
Miller-Rabin 源代码 经本人测试可用。
实现Miller-Rabin素数判定算法.zip
用c语言实现了Miller-Rabinchect算法,可以快速检验不是很大的整数是否为素数
公共密钥体系中,一般选择的素数都是相当大的(通常在100位以上),如果采用上次的试除法来判定,那么可能要穷尽你一生的...所以在一般的应用领域,人们采用的是Rabin-Miller检验法。 本文描述Miller-Rabin素性测试算法
通过改进Karp-Rabin 算法,实现了多模式字符串匹配技术,实验表明多模式Karp-Rabin算法具有良好的性能。随后在多模式Karp-Rabin 算法的基础上进一步改进,使其在高并发情况下能够支持模式串动态增删功能。实验表明该...
Miller-Rabin素数检测优化算法研究及其并行实现.pdf 含有证明
求质数的算法之Miller-Rabin费马小定理
miller-rabin算法是目前主流的基于概率的素数测试算法,在构建密码安全体系中占据重要的位置。南开大学机器人与信息自动化研究所,通过比较...通过对miller-rabin算法底层运算的优化,可以取得较以往实现更好的性能。
1.产生一个随机数在2的l次方跟2的l+1次方间,用Miller-rabin测试它是否是一个素数。 2.给出x和n,用扩展的欧几里得算法计算x的逆y(mod n)。 3.调用上面的两个函数,产生ras参数n=p*q,e和d。 4.给出信息M,用你...
2、对该整数进行小素数检验,在进行miller_rabin算法检测 3、获得大素数p、q后,计算n、e、的d过程有说明 4、可以对任意数字字母汉字加解密 5、内容的注释详细,易理解;用像伪代码般的python码出来的更容易对代码...
Elgamal public key encryption algorithm;Elgamal 公钥加密算法 Miller-Rabin probabilistic primality testing algorithm 素数判定测试 RSA 和 CRT 公钥加解密 ECDH 和 DH 密钥交换
Miller rabin primality test
通过将Miller-Rabin素性检测的思想拓展到多项式域,随机二分搜索可应用到多项式分解中。并以此为基础,分别针对有限域和代数数域改进了两种概率性算法。第一种算法在有限域上每次分解模素数的多项式的失败概率最多为...
MILLER-RABIN 素数测试算法课程报告 内含代码