代码来自维基百科的RSA (cryptosystem)。

RSA的JavaScript程序如下:

'use strict';/*** RSA hash function reference implementation.** @namespace*/
var RSA = {};/*** Generates an RSA hash* https://en.wikipedia.org/wiki/RSA_(cryptosystem)#A_working_example** @returns {array} Result of RSA generation*/
RSA.generate = function(){/*** Calculate modular multiplicative inverse.* https://en.wikipedia.org/wiki/Modular_multiplicative_inverse* Function based on PHP variant on http://rosettacode.org/wiki/Modular_inverse** @param   {a} int* @param   {n} int* @returns {int} Result of modular multiplicative inverse.*/function modular_multiplicative_inverse(a, n){var t  = 0,nt = 1,r  = n,nr = a % n;if (n < 0){n = -n;}if (a < 0){a = n - (-a % n);}while (nr !== 0) {var quot= (r/nr) | 0;var tmp = nt;  nt = t - quot*nt;  t = tmp;tmp = nr;  nr = r - quot*nr;  r = tmp;}if (r > 1) { return -1; }if (t < 0) { t += n; }return t;}/*** Generates a random prime** @param   {min} int, minimal value* @param   {max} int, maximal value* @returns {int} a random generated prime*/function random_prime(min, max){var p = Math.floor(Math.random() * ((max - 1) - min + 1)) + min;if(bigInt(p).isPrime()===true){return p;} else {return random_prime(min, max);   } }// generate valuesvar p = random_prime(1, 255), // 8 bitq = random_prime(1, 255), // 8 bitn = p * q,t = (p - 1) * (q - 1), // totient as φ(n) = (p − 1)(q − 1)e = random_prime(1, t),d = modular_multiplicative_inverse(e, t);return {n: n, // public key (part I)e: e, // public key (part II)d: d  // private key};
};/*** Encrypt* Uses BigInteger.js https://github.com/peterolson/BigInteger.js/tree/master** @param   {m} int, the 'message' to be encoded* @param   {n} int, n value returned from generate_rsa() aka public key (part I)* @param   {e} int, e value returned from generate_rsa() aka public key (part II)* @returns {int} encrypted hash*/
RSA.encrypt = function(m, n, e){return bigInt(m).pow(e).mod(n);
};/*** Decrypt* Uses BigInteger.js https://github.com/peterolson/BigInteger.js/tree/master** @param   {mEnc} int, the 'message' to be decoded (encoded with RSA_encrypt())* @param   {d} int, d value returned from generate_rsa() aka private key* @param   {n} int, n value returned from generate_rsa() aka public key (part I)* @returns {int} decrypted hash*/
RSA.decrypt = function(mEnc, d, n){return bigInt(mEnc).pow(d).mod(n);
};

RSA的JavaScript程序相关推荐

  1. 初级JavaScript程序员的绝佳进阶书

    四位顶尖专家合著 初级JavaScript程序员的绝佳进阶书 洞悉JavaScript内幕 "帮助你深入理解JavaScript的绝佳资源." --Nate Klaiber,资深W ...

  2. C语言中文网js,第一个JavaScript程序

    JavaScript 程序不能够独立运行,只能在宿主环境中执行.一般情况下可以把 JavaScript 代码放在网页中,借助浏览器环境来运行. 编写第一个程序 在 HTML 页面中嵌入 JavaScr ...

  3. Javascript 程序放在哪

    Javascript程序的形式 常见的Javascript程序有两个形式存在:一种写在HTML内,上一节的例子即是:一种以单独文件形式存在,文件名的后缀是.js Javascript程序放在哪 放在H ...

  4. 如何成为一个伟大的 JavaScript 程序员

    这篇文章主要概述在我5年工作经验的基础上,我成为优秀JavaScript开发人员所使用的技术和资源. 当前大多数Web开发人员面临着这样一个共同的问题:他们必须在多个不同的领域领先于他人--从数据库到 ...

  5. 【读书笔记】《编写高效的JavaScript程序》

    为什么80%的码农都做不了架构师?>>>    看到一篇文章,http://www.csdn.net/article/2012-11-20/2811887-writing-fast- ...

  6. 11条建议让你成为优秀的JavaScript程序员

    原文: 11条建议让你成为优秀的JavaScript程序员 每个编程语言都有他自己的个性,那么我们如何高效地掌握JavaScript呢?本 JavaScript教程 给你11条编程建议,让你成为优秀的 ...

  7. 一名靠谱的JavaScript程序员应备的素质

    周五, 2010年8月13号, 作者: anutron 小编: 这篇文章写于2010年作者工作在Cloudera期间,当时node.js还没有流行,很多人还瞧不上javascript这门简陋的脚本,文 ...

  8. 七个最佳 GitHub 代码库,让你成为更好的 JavaScript 程序员

    摘要:在前不久刚发布的 GitHub 年度报告中,JavaScript 依旧是最受程序员欢迎的编程语言,而想要成为一名优秀的 JavaScript 程序员,这 7 个 GitHub 代码库可能会提供助 ...

  9. 编写JavaScript程序实现:图像浏览器的功能

    编写JavaScript程序实现:图像浏览器的功能,如下图:  代码实现: <!doctype html> <html lang="en"><head ...

最新文章

  1. java 成员变量 成员方法_《Java基础知识》Java成员变量,成员方法,构造方法和析构方法...
  2. BidNet:无视差估计的双目图像去雾(CVPR2020)
  3. 商城开发(1)-前期准备
  4. 中國批准英特爾在東北投建晶片廠
  5. 信息学奥赛一本通(1150:求正整数2和n之间的完全数)
  6. HTTP1.1/2.0与QUIC协议
  7. moveit环境引入代码
  8. 端侧机器学习框架 Tensorlfow Lite
  9. LINUX 游戏服务器之旅1_SSH连接
  10. java batik_batik详解1
  11. tomcat war包解压规则
  12. IRPT_TAS简介
  13. 手把手教你如何 远程控制另一台电脑 保姆教程
  14. ChatGPT官宣数学能力再升级,网友:终于精通十以内加减法了
  15. 查询网站排名,收录情况
  16. Proteus仿真电路笔记
  17. 机器学习中的敏感性和特异性的概念
  18. Java——ZZULIOJ_1043: 最大值
  19. 反向链接是每位站长天天必需要做的
  20. cadsofttools CAD.NET 14.1.X

热门文章

  1. python改变像素点颜色,是否可以在Python中更改单个像素的颜色?
  2. Ubuntu sublime text 3无法输入中文的解决办法
  3. 基于情感词典的情感值分析
  4. 观察者模式代码php,PHP 观察者模式的实现代码
  5. Java I/O操作
  6. 为什么选择spark
  7. spring的部分注释
  8. 剑指offer面试题06. 从尾到头打印链表(辅助栈法)
  9. 计算机视觉三大会议——ICCV、ECCV和CVPR
  10. Qt总结:QMessageBox(原生态弹出框及究极超nice封装自定义弹出框)