Module bn
big-number library for Lua 5.x based on OpenSSL BIGNUM
This module provides a complete wrapper for OpenSSL’s BIGNUM operations, enabling arbitrary precision arithmetic similar to BIGNUM.
Usage:
bn = require('openssl').bn
Info:
- License: This code is hereby placed in the public domain.
- Author: Luiz Henrique de Figueiredo lhf@tecgraf.puc-rio.br
Functions
| bits (x) | bits(x) |
| tostring (x) | tostring(x) |
| tohex (x) | tohex(x) |
| totext (x[, n]) | totext(x[, n]) |
| tonumber (x) | tonumber(x) |
| iszero (x) | iszero(x) |
| isone (x) | isone(x) |
| isodd (x) | isodd(x) |
| isneg (x) | isneg(x) |
| number (x) | number(x) |
| text (t) | text(t) |
| compare (x, y) | compare(x, y) |
| __eq (x, y) | __eq(x, y) |
| __lt (x, y) | __lt(x, y) |
| sqr (x) | sqr(x) |
| neg (x) | neg(x) |
| abs (x) | abs(x) |
| add (x, y) | add(x, y) |
| sub (x, y) | sub(x, y) |
| mul (x, y) | mul(x, y) |
| div (x, y) | div(x, y) |
| mod (x, y) | mod(x, y) |
| rmod (x, y) | rmod(x, y) |
| divmod (x, y) | divmod(x, y) |
| gcd (x, y) | gcd(x, y) |
| pow (x, y) | pow(x, y) |
| addmod (x, y, m) | addmod(x, y, m) |
| submod (x, y, m) | submod(x, y, m) |
| mulmod (x, y, m) | mulmod(x, y, m) |
| powmod (x, y, m) | powmod(x, y, m) |
| sqrmod (x, m) | sqrmod(x, m) |
| invmod (x, m) | invmod(x, m) |
| sqrtmod (x, m) | sqrtmod(x, m) |
| random ([bits=32]) | random([bits]) |
| aprime ([bits=32]) | aprime([bits]) |
| isprime (x[, checks]) | isprime(x[, checks]) |
Functions
- bits (x)
-
bits(x)
Parameters:
- x big number
Returns:
-
integer number of bits
Usage:
bits = bn.bits(x) - tostring (x)
-
tostring(x)
Parameters:
- x big number
Returns:
-
string decimal representation
Usage:
s = bn.tostring(x) - tohex (x)
-
tohex(x)
Parameters:
- x big number
Returns:
-
string hexadecimal representation
Usage:
s = bn.tohex(x) - totext (x[, n])
-
totext(x[, n])
Parameters:
- x big number
- n number of bytes (optional)
Returns:
-
string binary representation
Usage:
t = bn.totext(x) - tonumber (x)
-
tonumber(x)
Parameters:
- x big number
Returns:
-
number
Usage:
n = bn.tonumber(x) - iszero (x)
-
iszero(x)
Parameters:
- x big number
Returns:
-
boolean true if x == 0
Usage:
ok = bn.iszero(x) - isone (x)
-
isone(x)
Parameters:
- x big number
Returns:
-
boolean true if x == 1
Usage:
ok = bn.isone(x) - isodd (x)
-
isodd(x)
Parameters:
- x big number
Returns:
-
boolean true if x is odd
Usage:
ok = bn.isodd(x) - isneg (x)
-
isneg(x)
Parameters:
- x big number
Returns:
-
boolean true if x < 0
Usage:
ok = bn.isneg(x) - number (x)
-
number(x)
Parameters:
- x number or string
Returns:
-
big number
Usage:
x = bn.number(123)
- text (t)
-
text(t)
Parameters:
- t string binary representation
Returns:
-
big number
Usage:
x = bn.text(t) - compare (x, y)
-
compare(x, y)
Parameters:
- x big number
- y big number
Returns:
-
integer (-1, 0, 1)
Usage:
cmp = bn.compare(x, y) - __eq (x, y)
-
__eq(x, y)
Parameters:
- x big number
- y big number
Returns:
-
boolean true if x == y
- __lt (x, y)
-
__lt(x, y)
Parameters:
- x big number
- y big number
Returns:
-
boolean true if x < y
- sqr (x)
-
sqr(x)
Parameters:
- x big number
Returns:
-
big number x^2
Usage:
y = bn.sqr(x) - neg (x)
-
neg(x)
Parameters:
- x big number
Returns:
-
big number -x
Usage:
y = bn.neg(x) - abs (x)
-
abs(x)
Parameters:
- x big number
Returns:
-
big number |x|
Usage:
y = bn.abs(x) - add (x, y)
-
add(x, y)
Parameters:
- x big number
- y big number
Returns:
-
big number x + y
Usage:
z = bn.add(x, y) - sub (x, y)
-
sub(x, y)
Parameters:
- x big number
- y big number
Returns:
-
big number x – y
Usage:
z = bn.sub(x, y) - mul (x, y)
-
mul(x, y)
Parameters:
- x big number
- y big number
Returns:
-
big number x * y
Usage:
z = bn.mul(x, y) - div (x, y)
-
div(x, y)
Parameters:
- x big number
- y big number
Returns:
-
big number x // y
Usage:
q = bn.div(x, y) - mod (x, y)
-
mod(x, y)
Parameters:
- x big number
- y big number
Returns:
-
big number x % y
Usage:
r = bn.mod(x, y) - rmod (x, y)
-
rmod(x, y)
Parameters:
- x big number
- y big number
Returns:
-
big number x mod y (always positive)
Usage:
r = bn.rmod(x, y) - divmod (x, y)
-
divmod(x, y)
Parameters:
- x big number
- y big number
Returns:
-
q, r quotient and remainder
Usage:
q, r = bn.divmod(x, y) - gcd (x, y)
-
gcd(x, y)
Parameters:
- x big number
- y big number
Returns:
-
big number gcd(x, y)
Usage:
g = bn.gcd(x, y) - pow (x, y)
-
pow(x, y)
Parameters:
- x big number
- y big number
Returns:
-
big number x^y
Usage:
z = bn.pow(x, y) - addmod (x, y, m)
-
addmod(x, y, m)
Parameters:
- x big number
- y big number
- m modulus
Returns:
-
big number (x + y) % m
Usage:
z = bn.addmod(x, y, m) - submod (x, y, m)
-
submod(x, y, m)
Parameters:
- x big number
- y big number
- m modulus
Returns:
-
big number (x – y) % m
Usage:
z = bn.submod(x, y, m) - mulmod (x, y, m)
-
mulmod(x, y, m)
Parameters:
- x big number
- y big number
- m modulus
Returns:
-
big number (x * y) % m
Usage:
z = bn.mulmod(x, y, m) - powmod (x, y, m)
-
powmod(x, y, m)
Parameters:
- x big number
- y big number
- m modulus
Returns:
-
big number (x^y) % m
Usage:
z = bn.powmod(x, y, m) - sqrmod (x, m)
-
sqrmod(x, m)
Parameters:
- x big number
- m modulus
Returns:
-
big number (x^2) % m
Usage:
z = bn.sqrmod(x, m) - invmod (x, m)
-
invmod(x, m)
Parameters:
- x big number
- m modulus
Returns:
-
big number modular inverse
Usage:
y = bn.invmod(x, m) - sqrtmod (x, m)
-
sqrtmod(x, m)
Parameters:
- x big number
- m modulus
Returns:
-
big number modular square root
Usage:
y = bn.sqrtmod(x, m) - random ([bits=32])
-
random([bits])
Parameters:
- bits number of bits (default 32) (default 32)
Returns:
-
big number random value
Usage:
x = bn.random(128)
- aprime ([bits=32])
-
aprime([bits])
Parameters:
- bits number of bits (default 32) (default 32)
Returns:
-
big number probable prime
Usage:
p = bn.aprime(128)
- isprime (x[, checks])
-
isprime(x[, checks])
Parameters:
- x big number
- checks number of checks (optional)
Returns:
-
boolean true if x is prime
Usage:
ok = bn.isprime(x)