RSA的JavaScript程序
代码来自维基百科的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程序相关推荐
- 初级JavaScript程序员的绝佳进阶书
四位顶尖专家合著 初级JavaScript程序员的绝佳进阶书 洞悉JavaScript内幕 "帮助你深入理解JavaScript的绝佳资源." --Nate Klaiber,资深W ...
- C语言中文网js,第一个JavaScript程序
JavaScript 程序不能够独立运行,只能在宿主环境中执行.一般情况下可以把 JavaScript 代码放在网页中,借助浏览器环境来运行. 编写第一个程序 在 HTML 页面中嵌入 JavaScr ...
- Javascript 程序放在哪
Javascript程序的形式 常见的Javascript程序有两个形式存在:一种写在HTML内,上一节的例子即是:一种以单独文件形式存在,文件名的后缀是.js Javascript程序放在哪 放在H ...
- 如何成为一个伟大的 JavaScript 程序员
这篇文章主要概述在我5年工作经验的基础上,我成为优秀JavaScript开发人员所使用的技术和资源. 当前大多数Web开发人员面临着这样一个共同的问题:他们必须在多个不同的领域领先于他人--从数据库到 ...
- 【读书笔记】《编写高效的JavaScript程序》
为什么80%的码农都做不了架构师?>>> 看到一篇文章,http://www.csdn.net/article/2012-11-20/2811887-writing-fast- ...
- 11条建议让你成为优秀的JavaScript程序员
原文: 11条建议让你成为优秀的JavaScript程序员 每个编程语言都有他自己的个性,那么我们如何高效地掌握JavaScript呢?本 JavaScript教程 给你11条编程建议,让你成为优秀的 ...
- 一名靠谱的JavaScript程序员应备的素质
周五, 2010年8月13号, 作者: anutron 小编: 这篇文章写于2010年作者工作在Cloudera期间,当时node.js还没有流行,很多人还瞧不上javascript这门简陋的脚本,文 ...
- 七个最佳 GitHub 代码库,让你成为更好的 JavaScript 程序员
摘要:在前不久刚发布的 GitHub 年度报告中,JavaScript 依旧是最受程序员欢迎的编程语言,而想要成为一名优秀的 JavaScript 程序员,这 7 个 GitHub 代码库可能会提供助 ...
- 编写JavaScript程序实现:图像浏览器的功能
编写JavaScript程序实现:图像浏览器的功能,如下图: 代码实现: <!doctype html> <html lang="en"><head ...
最新文章
- java 成员变量 成员方法_《Java基础知识》Java成员变量,成员方法,构造方法和析构方法...
- BidNet:无视差估计的双目图像去雾(CVPR2020)
- 商城开发(1)-前期准备
- 中國批准英特爾在東北投建晶片廠
- 信息学奥赛一本通(1150:求正整数2和n之间的完全数)
- HTTP1.1/2.0与QUIC协议
- moveit环境引入代码
- 端侧机器学习框架 Tensorlfow Lite
- LINUX 游戏服务器之旅1_SSH连接
- java batik_batik详解1
- tomcat war包解压规则
- IRPT_TAS简介
- 手把手教你如何 远程控制另一台电脑 保姆教程
- ChatGPT官宣数学能力再升级,网友:终于精通十以内加减法了
- 查询网站排名,收录情况
- Proteus仿真电路笔记
- 机器学习中的敏感性和特异性的概念
- Java——ZZULIOJ_1043: 最大值
- 反向链接是每位站长天天必需要做的
- cadsofttools CAD.NET 14.1.X