zoukankan      html  css  js  c++  java
  • JavaScript RSA算法简单实现(转)

    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 bigintegerbiginteger1 = 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> 
  • 相关阅读:
    奇怪的肚疼
    惊喜:vs2005 和 msdn 中文版 已经提供Subscriber 下载,MSDN全球订户可以下中文版爽了
    英语构语法(前、后缀部分)
    TSQL中的递归 作者:Alexander Kozak
    筹划向 Visual Studio 2005 导航控件的迁移 作者:Dave Donaldson Steven DeWalt
    Atlas客服端文件介绍
    Chinese lunar calendar for www.live.com
    帮助解决网页和JS文件中的中文编码问题的小工具
    ADO.NET 2.0 功能一览 作者:Bob Beauchemin
    Prototype.js 1.4中文使用手册PDF版下载
  • 原文地址:https://www.cnblogs.com/breg/p/2321748.html
Copyright © 2011-2022 走看看