在路上...
记录,发现。

 

 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// ==================================================================
25RSAAlgorithm()
26function RSAAlgorithm(){
27 //1.首先选择两个简单的质数p,q
28 var p=5
29 var q=13
30 var n=p*
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/*
75JAVA下面的简单实现
76import java.math.BigInteger;
77public 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
posted on 2005-08-11 15:16  在路上...  阅读(5786)  评论(2)    收藏  举报