More detailed README

This commit is contained in:
Juan Hernández Serrano 2019-04-06 10:50:29 +02:00
parent da8bb61c1c
commit 3b7a4c6bc2
2 changed files with 56 additions and 6 deletions

View File

@ -1,14 +1,37 @@
# bigint-mod-arith # bigint-mod-arith
Some extra functions to work with modular arithmetics using native JS (stage 3) implementation of BigInt. Some extra functions to work with modular arithmetics using native JS (stage 3) implementation of BigInt. It can be used with Node.js (starting in version 10.4.0) and [Web Browsers supporting BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility).
If you are looking for a cryptographically secure random generator and for probale primes (generation and testing), you may be interested in [bigint-secrets](https://github.com/juanelas/bigint-secrets)
_The operations supported on BigInts are not constant time. BigInt can be therefore **[unsuitable for use in cryptography](https://www.chosenplaintext.ca/articles/beginners-guide-constant-time-cryptography.html)**_
Many platforms provide native support for cryptography, such as [webcrypto](https://w3c.github.io/webcrypto/Overview.html) or [node crypto](https://nodejs.org/dist/latest/docs/api/crypto.html).
## Installation
bigint-mod-arith is distributed as both an ES6 and a CJS module.
The ES6 module is built for any [web browser supporting BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility). The module only uses native javascript implementations and no polyfills had been applied.
The CJS module is built as a standard node module.
bigint-mod-arith can be imported to your project with `npm`:
```bash
npm install bigint-mod-arith
```
For web brosers, you can also [download the bundle from GitHub](https://raw.githubusercontent.com/juanelas/bigint-mod-arith/master/dist/bigint-mod-arith-latest.browser.mod.min.js) or just hotlink to it:
```html
<script type="module" src="https://raw.githubusercontent.com/juanelas/bigint-mod-arith/master/dist/bigint-mod-arith-latest.browser.mod.min.js"></script>
```
## Usage examples ## Usage examples
```javascript ```javascript
const modArith = require('bigint-mod-arith'); const modArith = require('bigint-mod-arith');
let a = 5n; let a = BigInt(5); // more linter friendly
let b = 2n; let b = 2n; // stage 3 short syntax for BigInt
let n = 19n; let n = 19n;
console.log(modArith.modPow(a, b, n)); // prints 13 console.log(modArith.modPow(a, b, n)); // prints 13
@ -18,6 +41,8 @@ console.log(modArith.modInv(2n, 5n)); // prints 3
console.log(modArith.modInv(3n, 5n)); // prints 2 console.log(modArith.modInv(3n, 5n)); // prints 2
``` ```
# bigint-mod-arith JS Doc
{{>main}} {{>main}}
* * * * * *

View File

@ -1,14 +1,37 @@
# bigint-mod-arith # bigint-mod-arith
Some extra functions to work with modular arithmetics using native JS (stage 3) implementation of BigInt. Some extra functions to work with modular arithmetics using native JS (stage 3) implementation of BigInt. It can be used with Node.js (starting in version 10.4.0) and [Web Browsers supporting BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility).
If you are looking for a cryptographically secure random generator and for probale primes (generation and testing), you may be interested in [bigint-secrets](https://github.com/juanelas/bigint-secrets)
_The operations supported on BigInts are not constant time. BigInt can be therefore **[unsuitable for use in cryptography](https://www.chosenplaintext.ca/articles/beginners-guide-constant-time-cryptography.html)**_
Many platforms provide native support for cryptography, such as [webcrypto](https://w3c.github.io/webcrypto/Overview.html) or [node crypto](https://nodejs.org/dist/latest/docs/api/crypto.html).
## Installation
bigint-mod-arith is distributed as both an ES6 and a CJS module.
The ES6 module is built for any [web browser supporting BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility). The module only uses native javascript implementations and no polyfills had been applied.
The CJS module is built as a standard node module.
bigint-mod-arith can be imported to your project with `npm`:
```bash
npm install bigint-mod-arith
```
For web brosers, you can also [download the bundle from GitHub](https://raw.githubusercontent.com/juanelas/bigint-mod-arith/master/dist/bigint-mod-arith-latest.browser.mod.min.js) or just hotlink to it:
```html
<script type="module" src="https://raw.githubusercontent.com/juanelas/bigint-mod-arith/master/dist/bigint-mod-arith-latest.browser.mod.min.js"></script>
```
## Usage examples ## Usage examples
```javascript ```javascript
const modArith = require('bigint-mod-arith'); const modArith = require('bigint-mod-arith');
let a = 5n; let a = BigInt(5); // more linter friendly
let b = 2n; let b = 2n; // stage 3 short syntax for BigInt
let n = 19n; let n = 19n;
console.log(modArith.modPow(a, b, n)); // prints 13 console.log(modArith.modPow(a, b, n)); // prints 13
@ -18,6 +41,8 @@ console.log(modArith.modInv(2n, 5n)); // prints 3
console.log(modArith.modInv(3n, 5n)); // prints 2 console.log(modArith.modInv(3n, 5n)); // prints 2
``` ```
# bigint-mod-arith JS Doc
## Functions ## Functions
<dl> <dl>