RSA算法的实现——java版以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
package rsa;
import java math BigInteger;
public class RSA { private long p q e d n; public RSA(){ int pIndex = (int)(Math random()* ); int qIndex; int eIndex; do{ qIndex = (int)(Math random()* ); } while(qIndex==pIndex); do{ eIndex = (int)(Math random()* ); } while(eIndex==pIndex||eIndex==pIndex); p = ; q = ; e = ; n = p*q; d = calculateD(); } private long calculateD(){ long t = t = t = ; long r = (p )*(q ) m = r r = e r = ; do{ long q = r /r ; r = r r *q; if(r == )break; t = t t *q; while(t < ){ t +=m; } if(t >=m){ t %= m; } r = r ; r = r ; t = t ; t = t ; }while(r != ); if(r != ){ return ; } else{ return t ; } } public long getE() { return e; } public long getN() { return n; } public long getD() { return d; } public BigInteger encode(BigInteger data){ return pow(data d) mod(new BigInteger(n+ )); } public BigInteger decode(BigInteger code){ return pow(code e) mod(new BigInteger(n+ )); } public BigInteger pow(BigInteger data long p){ data = data pow((int)p); return data; } public static void main(String args[]){ RSA rsa = new RSA(); BigInteger data = new BigInteger( ); long oldtime = System currentTimeMillis(); BigInteger code = rsa encode(data); long newtime = System currentTimeMillis(); double codetime = ((double)(newtime oldtime))/ ; oldtime = System currentTimeMillis(); BigInteger decode = rsa decode(code); newtime = System currentTimeMillis(); double decodetime = ((double)(newtime oldtime))/ ; System out println( privateKey: +rsa d); System out println( publickKey: +rsa e); System out println( N: +rsa n); System out println( data: +data); System out println( code: +code+ time: +codetime); System out println( decode: +decode+ time: +decodetime); lishixinzhi/Article/program/Java/Javascript/201311/25327
分页:123