RSA算法的实现方法——Java版放送

文章作者 100test 发表时间 2007:08:06 11:47:45
来源 100Test.Com百考试题网


  一开始不知道有BigInteger这个大数类,居然自己去实现了一个,写了大数加法后,才发现有现成的T_T

以下是引用片段:
package rsa.
import java.math.BigInteger.

public class RSA {
private long p,q,e,d,n.
public RSA(){
int pIndex = (int)(Math.random()*10).
int qIndex.
int eIndex.
do{
qIndex = (int)(Math.random()*10).
}
while(qIndex==pIndex).
do{
eIndex = (int)(Math.random()*10).
}
while(eIndex==pIndex||eIndex==pIndex).
p = 1033.
q = 2017.
e = 29437.
n = p*q.
d = calculateD().
}
private long calculateD(){
long t0 = 0,t1 = 1,t2 = -1.
long r0 = (p-1)*(q-1), m = r0,r1 = e ,r2 = -1.
do{
long q = r0/r1.
r2 = r0-r1*q.
if(r2==0)break.
t2 = t0 - t1*q.
while(t2<0){
t2 =m.
}
if(t2>=m){
t2 %= m.
}
r0 = r1.
r1 = r2.
t0 = t1.
t1 = t2.
}while(r2!=0).
if(r1!=1){
return 0.
}
else{
return t2.
}
}

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("222222").
long oldtime = System.currentTimeMillis().
BigInteger code = rsa.encode(data).
long newtime = System.currentTimeMillis().
double codetime = ((double)(newtime-oldtime))/1000.
oldtime = System.currentTimeMillis().
BigInteger decode = rsa.decode(code).
newtime = System.currentTimeMillis().
double decodetime = ((double)(newtime-oldtime))/1000.
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).

}

}


src="/java/js/wxgg_java.js">

相关文章


Java攻击隐患难除安全不容忽视
Java、.NET,为什么不合二为一?
Java软件架构设计概论
用MyEclipse开发Spring入门操作
RSA算法的实现方法——Java版放送
Java之父称PHP,Ruby以及C#,不足为惧
RubyOnRails创始人:对Java说再见
没有RailsJava程序员如何使用Ruby[2]
没有RailsJava程序员如何使用Ruby[1]
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛