浏览模式: 标准 | 列表
大整数运算一般用于密钥计算中。以下是我从 google 上搜索到的几个 JavaScript 版本的的大整数运算库。
  1. http://www.onicos.com/staff/iz/amuse/javascript/expert/BigInt.txt 这是比较早期的一个 JavaScript 版本的大数运算库,由日本高手出雲所作,其中只包含了加减乘除、模(求余)和比较运算。
  2. http://www.faireal.net/demo/bigint0.5/beta28/ 这是另一个日本高手的作品,这个库中包含的功能非常全,它的历史可以参见该文
  3. http://www.leemon.com/crypto/BigInt.js 这个是美国高手 Leemon Baird 的作品,所实现的功能也非常全。
  4. http://www.ohdave.com/rsa/BigInt.js 最后这个来自 dave 的 RSA In JavaScript 网站,这个虽然功能没有前两个强大,但是使用比较方便,做一般的浏览器端加密部分已经够用了。

» 阅读全文

这几天做加密程序,需要用到大整数运算,PHP 中的 BCMath 扩展提供的功能很少,而且要将字符串表示的2进制数或者 16 进制的字符串转化为 BCMath 需要的 10 进制数字符串既麻烦效率又低。而 GMP 扩展在 Windows 上只有 PHP5 才支持,我的服务器上是 Windows 系统的 PHP 4.4.1。所以 GMP 也没发用。开始打算自己写一组这样的函数,后来在实现了加减乘以后,发现效率比 BCMath 还低。俗话说得好,车到山前必有路,果不其然,正当我不知如何是好时,在 Google 上就找到了 big_int 这个 PECL 扩展,用这个扩展作加密程序,比用 BCMath 和 GMP 扩展都简单,因为许多现成的函数都已经提供了。可惜的是这个扩展默认没有被添加到 PHP 中一起发布,在 PHP 手册中也没有介绍,而且也没有编译好的最新版本的 PHP 扩展文件,只能下载源代码。不过自己编译安装倒也不是很麻烦。下面就介绍一下如何在 Windows 上编译安装这个扩展。

» 阅读全文

12月
27

PHP big_int 中文使用参考

求一个大素数 p 很容易,用现成的素性验证算法就可以了。不过已知一个素数 p,求其本原根则很困难,因为需要将 p - 1 的素因子 q1,q2,……qk-1,qk都找出来,然后分别验证 gq1 mod p, gq2 mod p, ……gqk-1 mod p, gqk mod p,如果都不等于 1,则 g 是 p 的一个本原根。而然,如果 p 是一个很大的素数,例如 128 个 2 进制位的素数,要分解出 p - 1 的所有素因子来则是一件很困难的事情。

难道没有办法快速求一个大素数 p 及其本原根 g 的方法吗?方法肯定是有的,不然 Diffie-Hellman 算法也就没有意义了。下面就给出一个快速求大素数 p 及其本原根的算法,并给出相应的 php 的程序。

» 阅读全文

下面的内容来自 Rijndael in JavaScript。下面的代码是 Rijndael 算法的 JavaScript 实现。它可以在 IE4+、NS4+ 以及任何兼容 ECMAScript 第一版的浏览器中运行。这个实现没有进行优化,也就是说它不适合处理大量的数据(比如多于几 KB)和需要高速运行的应用程序中。

» 阅读全文