1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
<HTML>
3
<HEAD>
4
<TITLE> New Document </TITLE>
5
<META NAME="Generator" CONTENT="EditPlus">
6
<META NAME="Author" CONTENT="">
7
<META NAME="Keywords" CONTENT="">
8
<META NAME="Description" CONTENT="">
9
</HEAD>
10
11
<BODY>
12
<SCRIPT LANGUAGE="JavaScript">
13
<!--
14
// ==================================================================
15
// JavaScript RSA算法简单实现
16
// Know Bugs:
17
// 1. Math.pow存在计算精度问题,因此不能选取较大的质数,否则会溢出
18
// By midea0978
19
// date:2005-08-10
20
// 参考文献
21
// 1.RSA算法研究 http://www.cnblogs.com/midea0978/articles/65244.html
22
// 2.PKCS #1: RSA Cryptography Specifications Version 2.0
23
// http://www.faqs.org/rfcs/rfc2437.html
24
// ==================================================================
25
RSAAlgorithm()
26
function RSAAlgorithm(){
27
//1.首先选择两个简单的质数p,q
28
var p=5
29
var q=13
30
var n=p*q
31
//随机选择余数r,保证r与(p-1)*(q-1)=48互质
32
var r=7
33
//得到private key是p,q,r
34
document.write("----------------------------------<br>");
35
document.write("<B>Private Key:</B><br>");
36
document.write("p= "+p+"<br>");
37
document.write("q= "+q+"<br>");
38
document.write("r= "+r+"<br>");
39
document.write("----------------------------------<br>");
40
//2.计算public key
41
//找到m,保证rm ==1 mod (p-1)*(q-1)
42
var num=0
43
for(a=0;a<500;a++){
44
if(r*a%((p-1)*(q-1))==1){
45
num=a;
46
break;
47
}
48
}
49
var m=num
50
if(m>0){
51
document.write("<br>找到m= "+num+" ,计算余数="+(num*r)%((p-1)*(q-1))+",成功!<br>")
52
}
53
else{
54
document.write("找不到满足条件的m,请调整参数");
55
}
56
document.write("----------------------------------<br>");
57
document.write("<B>Public Key:<br></B>");
58
document.write("m= "+m+"<br>");
59
document.write("n= "+n+"<br>");
60
document.write("----------------------------------<br>");
61
document.write("<br>");
62
document.write("<B>#演示加密过程#</B><br>");
63
var text=20 //明文
64
document.write("明文="+text+"<br>");
65
//接下来, 计算 etext == text^r mod n, (0 <= b < n)
66
var etext=Math.pow(text,r)%n;
67
document.write("加密后的内容:"+etext+"<br>");
68
document.write("<br>");
69
document.write("#演示解密过程#<br>");
70
//text=etext^m mod pq
71
var text=Math.pow(etext,m)%n;
72
document.write("解密后的内容:"+text+"<br>");
73
}
74
/*
75
JAVA下面的简单实现
76
import java.math.BigInteger;
77
public class RSAAlgorithm {
78
public static void main(String[] args) {
79
BigInteger p = new BigInteger("5"); //P
80
BigInteger q = new BigInteger("13"); //Q
81
BigInteger n = new BigInteger("65"); //N
82
BigInteger r = new BigInteger("7");
83
84
BigInteger biginteger = new BigInteger("20");
85
BigInteger biginteger1 = biginteger.modPow(r, n);
86
System.out.println("加密数据:" + biginteger1);
87
BigInteger m = r.modInverse(new BigInteger("48"));
88
System.out.println("m:" + m);
89
BigInteger biginteger2 = biginteger1.modPow(m, n);
90
System.out.println("解密数据:" + biginteger2);
91
}
92
}
93
*/
94
//-->
95
</SCRIPT>
96
</BODY>
97
</HTML>
98
99
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">2
<HTML>3
<HEAD>4
<TITLE> New Document </TITLE>5
<META NAME="Generator" CONTENT="EditPlus">6
<META NAME="Author" CONTENT="">7
<META NAME="Keywords" CONTENT="">8
<META NAME="Description" CONTENT="">9
</HEAD>10

11
<BODY>12
<SCRIPT LANGUAGE="JavaScript">13
<!--14
// ==================================================================15
// JavaScript RSA算法简单实现16
// Know Bugs:17
// 1. Math.pow存在计算精度问题,因此不能选取较大的质数,否则会溢出18
// By midea097819
// date:2005-08-1020
// 参考文献21
// 1.RSA算法研究 http://www.cnblogs.com/midea0978/articles/65244.html22
// 2.PKCS #1: RSA Cryptography Specifications Version 2.023
// http://www.faqs.org/rfcs/rfc2437.html 24
// ==================================================================25
RSAAlgorithm()26
function RSAAlgorithm(){27
//1.首先选择两个简单的质数p,q28
var p=529
var q=1330
var n=p*q 31
//随机选择余数r,保证r与(p-1)*(q-1)=48互质32
var r=7 33
//得到private key是p,q,r34
document.write("----------------------------------<br>");35
document.write("<B>Private Key:</B><br>");36
document.write("p= "+p+"<br>");37
document.write("q= "+q+"<br>");38
document.write("r= "+r+"<br>");39
document.write("----------------------------------<br>");40
//2.计算public key41
//找到m,保证rm ==1 mod (p-1)*(q-1)42
var num=043
for(a=0;a<500;a++){44
if(r*a%((p-1)*(q-1))==1){45
num=a;46
break;47
}48
}49
var m=num 50
if(m>0){51
document.write("<br>找到m= "+num+" ,计算余数="+(num*r)%((p-1)*(q-1))+",成功!<br>")52
}53
else{54
document.write("找不到满足条件的m,请调整参数");55
}56
document.write("----------------------------------<br>");57
document.write("<B>Public Key:<br></B>");58
document.write("m= "+m+"<br>");59
document.write("n= "+n+"<br>");60
document.write("----------------------------------<br>");61
document.write("<br>");62
document.write("<B>#演示加密过程#</B><br>");63
var text=20 //明文64
document.write("明文="+text+"<br>");65
//接下来, 计算 etext == text^r mod n, (0 <= b < n)66
var etext=Math.pow(text,r)%n;67
document.write("加密后的内容:"+etext+"<br>");68
document.write("<br>");69
document.write("#演示解密过程#<br>");70
//text=etext^m mod pq71
var text=Math.pow(etext,m)%n;72
document.write("解密后的内容:"+text+"<br>");73
}74
/*75
JAVA下面的简单实现76
import java.math.BigInteger;77
public class RSAAlgorithm {78
public static void main(String[] args) {79
BigInteger p = new BigInteger("5"); //P80
BigInteger q = new BigInteger("13"); //Q81
BigInteger n = new BigInteger("65"); //N82
BigInteger r = new BigInteger("7");83

84
BigInteger biginteger = new BigInteger("20");85
BigInteger biginteger1 = biginteger.modPow(r, n);86
System.out.println("加密数据:" + biginteger1);87
BigInteger m = r.modInverse(new BigInteger("48"));88
System.out.println("m:" + m);89
BigInteger biginteger2 = biginteger1.modPow(m, n);90
System.out.println("解密数据:" + biginteger2);91
}92
}93
*/94
//-->95
</SCRIPT>96
</BODY>97
</HTML>98

99




浙公网安备 33010602011771号